Comments (5)
Those arc4random functions were removed from BSD (from which we derive our implementations). The motivation for this is that the responsibility of stirring/adding randomness is not the user's job. That task should be done by the implementation/the kernel. The implementation is self-stirring, randomness comes from the kernel.
getdtablesize
was removed from POSIX. Should replace with sysconf(_SC_OPEN_MAX)
.
The getdents
change actually matches glibc. Form their man page:
Glibc does not provide a wrapper for this system call; call it using syscall(2). You will need to define the linux_dirent structure yourself. However, you probably want to use readdir(3) instead.
And at the top:
DESCRIPTION
This is not the function you are interested in. Look at readdir(3) for the POSIX conforming C library interface.
If for some reason readdir
is not sufficient for firefox, use syscall(__NR_getdents)
. You should take a look at how it's being used though. If it isn't already written that way, that means that it is Android (or at least non-GNU Linux) specific code because glibc would require it to be written that way anyway. There is probably a better way to write it.
from ndk.
Thanks for the explanation! I assume this reasoning is behind the "Removed from all versions of NDK libc, m, and dl all symbols which the platform versions of those libs do not support." release note?
from ndk.
Correct. There's a non-zero chance that some of the things that were removed shouldn't have been (see #1), so don't hesitate to file bugs if you find other things that seem like they should be there.
from ndk.
Thanks for explanation,
are there any specific reasons why removed arc4random_* functions still exist in stdlib.h ?
ex. {NDK-r12b}/platforms/android-19/arch-arm/include/stdlib.h lines 119-120:
extern void arc4random_stir(void);
extern void arc4random_addrandom(unsigned char *, int);
from ndk.
Because our headers are and have always been incorrect. Recently they're more wrong than they used to be since the shared libraries, which were also wrong, were fixed.
We're trying to fix this (#120), but until recently even we didn't have a good idea of what functions were available in each API level/architecture. The shared libraries in the NDK (as of r12) are should all be a correct representation of the world now though.
from ndk.
Related Issues (20)
- [Bug]: ld.lld: error: undefined symbol: __aeabi_l2d HOT 4
- [BUG] Unable to Handle Exceptions Properly HOT 2
- [BUG] With Buildozer for Python/Kivy project for Android NDK 26b HOT 6
- [Bug]: Cannot select while compiling llama.cpp on Windows HOT 4
- Simpleperf: Only one FEAT_FILE2 feature section can be read from the file HOT 2
- AES support (arm/arm64 vaeseq_u8) HOT 12
- [FR] clang driver should default to gnu hashes if the target api level is >= 23? HOT 7
- [Bug]: Segmentation Fault trying to run an LLVM pass HOT 2
- [Bug] clang frontend crashes on NDK 28.0.11617993 HOT 11
- [BUG] Building Library\Bee\artifacts\Android\a7sem\2b6k1szry106.o failed [RAM ISSUE?] HOT 9
- [FR] remove superfluous LLVM libraries HOT 10
- [BUG] clang frontend crashes on both r26d and canary version HOT 5
- [Bug] ndk clang building release raise error `declaration does not match` while llvm upstream compiles HOT 8
- [FR] improve bad diagnostic for `__REMOVED_IN` on `ALooper_pollAll` HOT 8
- [BUG] With Compose AndroidView on API 29, ANativeWindow_fromSurface with SurfaceView without an additional ViewGroup makes AndroidViewsHandle go black HOT 3
- [FR] Update Vulkan headers in sysroot of NDK r27 to enable FFmpeg's Vulkan integration HOT 19
- [Feature request] consider to provide libc.a for each API level HOT 6
- [BUG] using thread_local in x64 Android 12L/13 desktop simulator for release build generates invalid init function for thread_local variable that leads to SIGSEGV HOT 1
- [BUG] 23.1.77 Build errors on Unity 2022.3.21f1 HOT 7
- [BUG] Prebuilt clang and ld.lld fail to load compatible pass plugin HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ndk.