From: Szabolcs Nagy Date: Wed, 20 Apr 2022 08:54:31 +0000 (+0100) Subject: cheri: rtld: fix _dl_start to return elfptr_t X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=06fda784450ff505a14c0af87a5c68e153b08b31;p=thirdparty%2Fglibc.git cheri: rtld: fix _dl_start to return elfptr_t Functions returning a pointer to the user entry need to use an int type that can represent pointers. --- diff --git a/elf/rtld.c b/elf/rtld.c index cbbaf4a3319..2c61935a21e 100644 --- a/elf/rtld.c +++ b/elf/rtld.c @@ -416,15 +416,15 @@ DL_SYSINFO_IMPLEMENTATION #endif #ifdef DONT_USE_BOOTSTRAP_MAP -static ElfW(Addr) _dl_start_final (void *arg); +static elfptr_t _dl_start_final (void *arg); #else struct dl_start_final_info { struct link_map l; RTLD_TIMING_VAR (start_time); }; -static ElfW(Addr) _dl_start_final (void *arg, - struct dl_start_final_info *info); +static elfptr_t _dl_start_final (void *arg, + struct dl_start_final_info *info); #endif /* These are defined magically by the linker. */ @@ -446,10 +446,10 @@ RTLD_START this function is not inlined (see below). */ #ifdef DONT_USE_BOOTSTRAP_MAP -static inline ElfW(Addr) __attribute__ ((always_inline)) +static inline elfptr_t __attribute__ ((always_inline)) _dl_start_final (void *arg) #else -static ElfW(Addr) __attribute__ ((noinline)) +static elfptr_t __attribute__ ((noinline)) _dl_start_final (void *arg, struct dl_start_final_info *info) #endif { @@ -515,7 +515,7 @@ _dl_start_final (void *arg, struct dl_start_final_info *info) # define bootstrap_map info.l #endif -static ElfW(Addr) __attribute_used__ +static elfptr_t __attribute_used__ _dl_start (void *arg) { #ifdef DONT_USE_BOOTSTRAP_MAP