Hi Christophe, Christophe Lyon wrote, > Hi, > > While working on FDPIC support for ARM in uclibc-ng, I've noticed that > the write() function if defined as a strong global symbol, while the > __GI_write alias is weak. > > 00000034 w F .text 0000005c .hidden __GI_write > 00000034 g F .text 0000005c write > > > my pre-processed write.i contains: > ssize_t __attribute__ ((weak)) write (int fd, const void *buf, size_t > count) { int oldtype; ssize_t result; if (__builtin_expect > (__libc_multiple_threads == 0, 1)) return __write_nocancel (fd, buf, > count); oldtype = __libc_enable_asynccancel (); result = > __write_nocancel (fd, buf, count); __libc_disable_asynccancel > (oldtype); return result; } > > extern __typeof (write) __EI_write __asm__("" "write"); extern > __typeof (write) __EI_write __attribute__((alias ("" "__GI_write"))); > > and write.s has: > .weak __GI_write > .hidden __GI_write > .type __GI_write, %function > __GI_write: > .fnstart > [...] > .size __GI_write, .-__GI_write > .global write > .set write,__GI_write > > From the .i file, I'd expect the weak attribute to be set on write. > > FWIW, I'd like write to be weak, because currently it prevents > re-defining it user code and linking statically with libc.a > > I've checked that glibc and newlib have weak write. > > > Since this seems to depend on the threads model, my .config has: > # HAS_NO_THREADS is not set > UCLIBC_HAS_LINUXTHREADS=y > UCLIBC_HAS_THREADS_NATIVE=y > UCLIBC_HAS_THREADS=y > PTHREADS_DEBUG_SUPPORT=y > > and having > # UCLIBC_HAS_LINUXTHREADS is not set > has no effect on write's weakness. > > What am I missing?
May be it is just not implemented as weak in uClibc-ng/uClibc. Is the ARM FDPIC port targeting Linuxthreads or NPTL? All existing FDPIC targets (Blackfin/FR-V) are using Linuxthreads. Is it a strict requirement for your test code to overwrite write()? Maybe we could first import your port and test static and shared support and then trying to get write and may be other required functions to be weak. What does musl in this case? best regards Waldemar _______________________________________________ devel mailing list devel@uclibc-ng.org https://mailman.uclibc-ng.org/cgi-bin/mailman/listinfo/devel