{"push_id":2638625661,"size":3,"distinct_size":3,"ref":"refs/heads/master","head":"329ea513b451ae8322aa7a24ed84da13992af2dd","before":"c4ad5782c44f4fa23d3ca9bec1e288c24cf2e6df","commits":[{"sha":"e826574c985a15a500262f2fbd21c7e9259d3d11","author":{"name":"Florian Weimer","email":"a228da394793d2e6e5b1b6a5525945d856f25556@redhat.com"},"message":"x86: Make strncmp usable from rtld\n\nDue to the way the conditions were written, the rtld build of strncmp\nended up with no definition of the strncmp symbol at all: The\nimplementations were renamed for use within an IFUNC resolver, but the\nIFUNC resolver itself was missing (because rtld does not use IFUNCs).\n\nReviewed-by: Carlos O'Donell <carlos@redhat.com>","distinct":true,"url":"https://api.github.com/repos/tuliom/glibc/commits/e826574c985a15a500262f2fbd21c7e9259d3d11"},{"sha":"0221ce2a90be2d40fc90f0b5dcec77a1ec013f53","author":{"name":"H.J. Lu","email":"e6b730070cb8ff71eb70dcaf29e26324d883b33b@gmail.com"},"message":"i386: Change offset of __private_ss to 0x30 [BZ #23250]\n\nsysdeps/i386/nptl/tls.h has\n\ntypedef struct\n{\n  void *tcb;            /* Pointer to the TCB.  Not necessarily the\n                           thread descriptor used by libpthread.  */\n  dtv_t *dtv;\n  void *self;           /* Pointer to the thread descriptor.  */\n  int multiple_threads;\n  uintptr_t sysinfo;\n  uintptr_t stack_guard;\n  uintptr_t pointer_guard;\n  int gscope_flag;\n  int __glibc_reserved1;\n  /* Reservation of some values for the TM ABI.  */\n  void *__private_tm[4];\n  /* GCC split stack support.  */\n  void *__private_ss;\n} tcbhead_t;\n\nThe offset of __private_ss is 0x34.  But GCC defines\n\n/* We steal the last transactional memory word.  */\n #define TARGET_THREAD_SPLIT_STACK_OFFSET 0x30\n\nand libgcc/config/i386/morestack.S has\n\n\tcmpl\t%gs:0x30,%eax\t\t# See if we have enough space.\n\tmovl\t%eax,%gs:0x30\t\t# Save the new stack boundary.\n\tmovl\t%eax,%gs:0x30\t\t# Save the new stack boundary.\n\tmovl\t%ecx,%gs:0x30\t\t# Save new stack boundary.\n\tmovl\t%eax,%gs:0x30\n\tmovl\t%gs:0x30,%eax\n\tmovl\t%eax,%gs:0x30\n\nSince update TARGET_THREAD_SPLIT_STACK_OFFSET changes split stack ABI,\nthis patch updates tcbhead_t to match GCC.\n\n\t[BZ #23250]\n\t[BZ #10686]\n\t* sysdeps/i386/nptl/tls.h (tcbhead_t): Change __private_tm[4]\n\tto _private_tm[3] and add __glibc_reserved2.\n\tAdd _Static_assert of offset of __private_ss == 0x30.\n\t* sysdeps/x86_64/nptl/tls.h: Add _Static_assert of offset of\n\t__private_ss == 0x40 for ILP32 and == 0x70 for LP64.","distinct":true,"url":"https://api.github.com/repos/tuliom/glibc/commits/0221ce2a90be2d40fc90f0b5dcec77a1ec013f53"},{"sha":"329ea513b451ae8322aa7a24ed84da13992af2dd","author":{"name":"Zack Weinberg","email":"02ab20d5fc9978a64e27543b6c1e17c9309ce8db@panix.com"},"message":"Avoid cancellable I/O primitives in ld.so.\n\nNeither the <dlfcn.h> entry points, nor lazy symbol resolution, nor\ninitial shared library load-up, are cancellation points, so ld.so\nshould exclusively use I/O primitives that are not cancellable.  We\ncurrently achieve this by having the cancellation hooks compile as\nno-ops when IS_IN(rtld); this patch changes to using exclusively\n_nocancel primitives in the source code instead, which makes the\nintent clearer and significantly reduces the amount of code compiled\nunder IS_IN(rtld) as well as IS_IN(libc) -- in particular,\nelf/Makefile no longer thinks we require a copy of unwind.c in\nrtld-libc.a.  (The older mechanism is preserved as a backstop.)\n\nThe bulk of the change is splitting up the files that define the\n_nocancel I/O functions, so they don't also define the variants that\n*are* cancellation points; after which, the existing logic for picking\nout the bits of libc that need to be recompiled as part of ld.so Just\nWorks.  I did this for all of the _nocancel functions, not just the\nones used by ld.so, for consistency.\n\nfcntl was a little tricky because it's only a cancellation point for\ncertain opcodes (F_SETLKW(64), which can block), and the existing\n__fcntl_nocancel wasn't applying the FCNTL_ADJUST_CMD hook, which\nstrikes me as asking for trouble, especially as the only nontrivial\ndefinition of FCNTL_ADJUST_CMD (for powerpc64) changes F_*LK* opcodes.\nTo fix this, fcntl_common moves to fcntl_nocancel.c along with\n__fcntl_nocancel, and changes its name to the extern (but hidden)\nsymbol __fcntl_nocancel_adjusted, so that regular fcntl can continue\ncalling it.  __fcntl_nocancel now applies FCNTL_ADJUST_CMD; so that\nboth both fcntl.c and fcntl_nocancel.c can see it, the only nontrivial\ndefinition moves from sysdeps/u/s/l/powerpc/powerpc64/fcntl.c to\n.../powerpc64/sysdep.h and becomes entirely a macro, instead of a macro\nthat calls an inline function.\n\nThe nptl version of libpthread also changes a little, because its\n\"compat-routines\" formerly included files that defined all the\n_nocancel functions it uses; instead of continuing to duplicate them,\nI exported the relevant ones from libc.so as GLIBC_PRIVATE.  Since the\nLinux fcntl.c calls a function defined by fcntl_nocancel.c, it can no\nlonger be used from libpthread.so; instead, introduce a custom\nforwarder, pt-fcntl.c, and export __libc_fcntl from libc.so as\nGLIBC_PRIVATE.  The nios2-linux ABI doesn't include a copy of vfork()\nin libpthread, and it was handling that by manipulating\nlibpthread-routines in .../linux/nios2/Makefile; it is cleaner to do\nwhat other such ports do, and have a pt-vfork.S that defines no symbols.\n\nRight now, it appears that Hurd does not implement _nocancel I/O, so\nsysdeps/generic/not-cancel.h will forward everything back to the\nregular functions.  This changed the names of some of the functions\nthat sysdeps/mach/hurd/dl-sysdep.c needs to interpose.\n\n\t* elf/dl-load.c, elf/dl-misc.c, elf/dl-profile.c, elf/rtld.c\n\t* sysdeps/unix/sysv/linux/dl-sysdep.c\n\tInclude not-cancel.h.  Use __close_nocancel instead of __close,\n\t__open64_nocancel instead of __open, __read_nocancel instead of\n\t__libc_read, and __write_nocancel instead of __libc_write.\n\n\t* csu/check_fds.c (check_one_fd)\n\t* sysdeps/posix/fdopendir.c (__fdopendir)\n\t* sysdeps/posix/opendir.c (__alloc_dir): Use __fcntl_nocancel\n        instead of __fcntl and/or __libc_fcntl.\n\n\t* sysdeps/unix/sysv/linux/pthread_setname.c (pthread_setname_np)\n\t* sysdeps/unix/sysv/linux/pthread_getname.c (pthread_getname_np)\n        * sysdeps/unix/sysv/linux/i386/smp.h (is_smp_system):\n\tUse __open64_nocancel instead of __open_nocancel.\n\n\t* sysdeps/unix/sysv/linux/not-cancel.h: Move all of the\n\thidden_proto declarations to the end and issue them if either\n\tIS_IN(libc) or IS_IN(rtld).\n\t* sysdeps/unix/sysv/linux/Makefile [subdir=io] (sysdep_routines):\n\tAdd close_nocancel, fcntl_nocancel, nanosleep_nocancel,\n\topen_nocancel, open64_nocancel, openat_nocancel, pause_nocancel,\n\tread_nocancel, waitpid_nocancel, write_nocancel.\n\n        * io/Versions [GLIBC_PRIVATE]: Add __libc_fcntl,\n        __fcntl_nocancel, __open64_nocancel, __write_nocancel.\n        * posix/Versions: Add __nanosleep_nocancel, __pause_nocancel.\n\n        * nptl/pt-fcntl.c: New file.\n        * nptl/Makefile (pthread-compat-wrappers): Remove fcntl.\n        (libpthread-routines): Add pt-fcntl.\n        * include/fcntl.h (__fcntl_nocancel_adjusted): New function.\n        (__libc_fcntl): Remove attribute_hidden.\n\t* sysdeps/unix/sysv/linux/fcntl.c (__libc_fcntl): Call\n\t__fcntl_nocancel_adjusted, not fcntl_common.\n        (__fcntl_nocancel): Move to new file fcntl_nocancel.c.\n\t(fcntl_common): Rename to __fcntl_nocancel_adjusted; also move\n\tto fcntl_nocancel.c.\n\t* sysdeps/unix/sysv/linux/fcntl_nocancel.c: New file.\n\t* sysdeps/unix/sysv/linux/powerpc/powerpc64/fcntl.c: Remove file.\n\t* sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h:\n\tDefine FCNTL_ADJUST_CMD here, as a self-contained macro.\n\n\t* sysdeps/unix/sysv/linux/close.c: Move __close_nocancel to...\n\t* sysdeps/unix/sysv/linux/close_nocancel.c: ...this new file.\n\t* sysdeps/unix/sysv/linux/nanosleep.c: Move __nanosleep_nocancel to...\n\t* sysdeps/unix/sysv/linux/nanosleep_nocancel.c: ...this new file.\n\t* sysdeps/unix/sysv/linux/open.c: Move __open_nocancel to...\n\t* sysdeps/unix/sysv/linux/open_nocancel.c: ...this new file.\n\t* sysdeps/unix/sysv/linux/open64.c: Move __open64_nocancel to...\n\t* sysdeps/unix/sysv/linux/open64_nocancel.c: ...this new file.\n\t* sysdeps/unix/sysv/linux/openat.c: Move __openat_nocancel to...\n\t* sysdeps/unix/sysv/linux/openat_nocancel.c: ...this new file.\n\t* sysdeps/unix/sysv/linux/openat64.c: Move __openat64_nocancel to...\n\t* sysdeps/unix/sysv/linux/openat64_nocancel.c: ...this new file.\n\t* sysdeps/unix/sysv/linux/pause.c: Move __pause_nocancel to...\n\t* sysdeps/unix/sysv/linux/pause_nocancel.c: ...this new file.\n\t* sysdeps/unix/sysv/linux/read.c: Move __read_nocancel to...\n\t* sysdeps/unix/sysv/linux/read_nocancel.c: ...this new file.\n\t* sysdeps/unix/sysv/linux/waitpid.c: Move __waitpid_nocancel to...\n\t* sysdeps/unix/sysv/linux/waitpid_nocancel.c: ...this new file.\n\t* sysdeps/unix/sysv/linux/write.c: Move __write_nocancel to...\n\t* sysdeps/unix/sysv/linux/write_nocancel.c: ...this new file.\n\n        * sysdeps/unix/sysv/linux/nios2/Makefile: Don't override\n        libpthread-routines.\n        * sysdeps/unix/sysv/linux/nios2/pt-vfork.S: New file which\n        defines nothing.\n\n        * sysdeps/mach/hurd/dl-sysdep.c: Define __read instead of\n        __libc_read, and __write instead of __libc_write.  Define\n        __open64 in addition to __open.","distinct":true,"url":"https://api.github.com/repos/tuliom/glibc/commits/329ea513b451ae8322aa7a24ed84da13992af2dd"}]}
{"actor":{"display_login":"tuliom"}}