diff mbox series

libsanitizer: cherry-pick from upstream

Message ID CAMe9rOrB9X8ZqX5YvX5jY0EQCABQ0RjYFP99DO8UMorKe4Nw_w@mail.gmail.com
State New
Headers show
Series libsanitizer: cherry-pick from upstream | expand

Commit Message

H.J. Lu May 14, 2021, 1:26 a.m. UTC
On Thu, May 13, 2021 at 1:11 PM H.J. Lu <hjl.tools@gmail.com> wrote:
>
> On Thu, May 13, 2021 at 1:01 PM H.J. Lu <hjl.tools@gmail.com> wrote:
> >
> > On Thu, May 13, 2021 at 10:27 AM Martin Liška <mliska@suse.cz> wrote:
> > >
> > > On 5/13/21 5:54 PM, H.J. Lu wrote:
> > > > On Thu, May 13, 2021 at 09:28:01AM +0200, Martin Liška wrote:
> > > >> I'm planning to do merge from master twice a year.
> > > >> This merge was tested on x86_64-linux-gnu and ppc64le-linux-gnu
> > > >> and survives regression tests.
> > > >>
> > > >> Pushed to master.
> > > >> Thanks,
> > > >> Martin
> > > >>
> > > >> Merged revision: f58e0513dd95944b81ce7a6e7b49ba656de7d75f
> > > >
> > > > On Linux/x86-64, I got
> > > >
> > > > ../../../../../src-master/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp: In function ??void __sanitizer::InitTlsSize()??:
> > > > ../../../../../src-master/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp:209:55: error: invalid conversion from ??__sanitizer::uptr*?? {aka ??long unsigned int*??} to ??size_t*?? {aka ??unsigned int*??} [-fpermissive]
> > > >    209 |   ((void (*)(size_t *, size_t *))get_tls_static_info)(&g_tls_size, &tls_align);
> > > >        |                                                       ^~~~~~~~~~~
> > > >        |                                                       |
> > > >        |                                                       __sanitizer::uptr* {aka long unsigned int*}
> > > >
> > > >
> > > > H.J.
> > > >
> > >
> > > Hm, I can't reproduce it:
> > >
> > > /dev/shm/objdir/./gcc/xgcc -shared-libgcc -B/dev/shm/objdir/./gcc -nostdinc++ -L/dev/shm/objdir/x86_64-pc-linux-gnu/libstdc++-v3/src -L/dev/shm/objdir/x86_64-pc-linux-gnu/libstdc++-v3/src/.libs -L/dev/shm/objdir/x86_64-pc-linux-gnu/libstdc++-v3/libsupc++/.libs -B/home/marxin/bin/gcc/x86_64-pc-linux-gnu/bin/ -B/home/marxin/bin/gcc/x86_64-pc-linux-gnu/lib/ -isystem /home/marxin/bin/gcc/x86_64-pc-linux-gnu/include -isystem /home/marxin/bin/gcc/x86_64-pc-linux-gnu/sys-include -D_GNU_SOURCE -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -DHAVE_RPC_XDR_H=0 -DHAVE_TIRPC_RPC_XDR_H=0 -I. -I/home/marxin/Programming/gcc/libsanitizer/sanitizer_common -I.. -I /home/marxin/Programming/gcc/libsanitizer/include -I /home/marxin/Programming/gcc/libsanitizer -isystem /home/marxin/Programming/gcc/libsanitizer/include/system -Wall -W -Wno-unused-parameter -Wwrite-strings -pedantic -Wno-long-long -fPIC -fno-builtin -fno-exceptions -fno-rtti -fomit-frame-pointer -funwind-tables -fvisibility=hidden -Wno-variadic-macros -I../../libstdc++-v3/include -I../../libstdc++-v3/include/x86_64-pc-linux-gnu -I/home/marxin/Programming/gcc/libsanitizer/../libstdc++-v3/libsupc++ -std=gnu++14 -fcf-protection -mshstk -DSANITIZER_LIBBACKTRACE -DSANITIZER_CP_DEMANGLE -I /home/marxin/Programming/gcc/libsanitizer/../libbacktrace -I ../libbacktrace -I /home/marxin/Programming/gcc/libsanitizer/../include -include /home/marxin/Programming/gcc/libsanitizer/libbacktrace/backtrace-rename.h -g -O2 -D_GNU_SOURCE -MT sanitizer_linux_libcdep.lo -MD -MP -MF .deps/sanitizer_linux_libcdep.Tpo -c /home/marxin/Programming/gcc/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp  -fPIC -DPIC -o .libs/sanitizer_linux_libcdep.o
> > >
> > > Can you please show full command line? And please attach a pre-processed source file.
> > > Thanks,
> > > Martin
> >
> > The problem is -mx32 where size_t == unsigned int, not unsigned long int.
> >
>
> I am testing this patch:
>
> diff --git a/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp
> b/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp
> index da19d3d2ceb..4f9577a97e2 100644
> --- a/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp
> +++ b/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp
> @@ -197,7 +197,7 @@ __attribute__((unused)) static bool
> GetLibcVersion(int *major, int *minor,
>  __attribute__((unused)) static int g_use_dlpi_tls_data;
>
>  #if SANITIZER_GLIBC && !SANITIZER_GO
> -__attribute__((unused)) static uptr g_tls_size;
> +__attribute__((unused)) static size_t g_tls_size;
>  void InitTlsSize() {
>    int major, minor, patch;
>    g_use_dlpi_tls_data =

This is what I checked in.
diff mbox series

Patch

From f3b1516d9dfd969d7cc1ca6f26dec13478a1c458 Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Thu, 13 May 2021 18:23:55 -0700
Subject: [PATCH] libsanitizer: cherry-pick from upstream

cherry-pick:

72797dedb720 [sanitizer] Use size_t on g_tls_size to fix build on x32
---
 libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp b/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp
index da19d3d2ceb..4f9577a97e2 100644
--- a/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp
+++ b/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp
@@ -197,7 +197,7 @@  __attribute__((unused)) static bool GetLibcVersion(int *major, int *minor,
 __attribute__((unused)) static int g_use_dlpi_tls_data;
 
 #if SANITIZER_GLIBC && !SANITIZER_GO
-__attribute__((unused)) static uptr g_tls_size;
+__attribute__((unused)) static size_t g_tls_size;
 void InitTlsSize() {
   int major, minor, patch;
   g_use_dlpi_tls_data =
-- 
2.31.1