From patchwork Sun Oct 4 13:09:36 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Topi Miettinen X-Patchwork-Id: 40658 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id AC09C386F014; Sun, 4 Oct 2020 13:09:56 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org AC09C386F014 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1601816996; bh=wpwN062xlQplFbm+lGSuMCMGbdMiDFWskckU0jCugzU=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=hvsw7r28Cg4pCGN8zSwscStREp3+UQHHnyTTGigm9Zxh9SwCwGzu9tXo3IZu+pJ2R B0VqJrjFQxOcWMBgB0rjHxPgWAkjOim6gdRYy047P55Tq73SiO27gzdqvppksKNDFi /ILNo1NV3unjQv0jnVai5N8TE+iWW+SWq21wwy14= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-lf1-x142.google.com (mail-lf1-x142.google.com [IPv6:2a00:1450:4864:20::142]) by sourceware.org (Postfix) with ESMTPS id D015A386F014 for ; Sun, 4 Oct 2020 13:09:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org D015A386F014 Received: by mail-lf1-x142.google.com with SMTP id u8so7733063lff.1 for ; Sun, 04 Oct 2020 06:09:53 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=wpwN062xlQplFbm+lGSuMCMGbdMiDFWskckU0jCugzU=; b=aKfIv3fazg7g6IwOpW7uFH6sV8bC4xVCtKou1hY222r1QX116XCjL6D8cs0Uav2xZJ 8Hd2DX7ILntnmtJTJV55lgAemXqiFWDWCww0m2jEsQZIvMzyLTC1ka/aXuleqb8D8Vba f/3b8LWJrlqbQAh+UDVLOikxFDi3SOlJd4fUt4mljJ/T10wVdOL00PsNXyUjkRMxVtJK 3nO75AHjxiLrfcwjW4KdtUJvpUIENCiyct66MlMOdwrS2w2yTZZT+r2CYtDzpE0OeMp3 SiChJWf8tfaYPsRpvlZlzO4H110MTh2doCA78MM9HWof2EsF/CxMQ1EEJP9KEkSbBulv z7mQ== X-Gm-Message-State: AOAM5316SjQKaZiCPJB2jVf2kZ73NbIZwHpak4uKVN+MMyZM2AuL+8jQ 3vOVkbKnxjg6RqMMu1BCu6pF2SEK9c4= X-Google-Smtp-Source: ABdhPJztpKEkDYY+PNoavk02qYLlcHgS2AS5ql095gtkQwj0WKYx+GihiUiIEzHRMcme2/t++K800Q== X-Received: by 2002:a19:8256:: with SMTP id e83mr754722lfd.530.1601816992305; Sun, 04 Oct 2020 06:09:52 -0700 (PDT) Received: from localhost.localdomain (88-114-211-119.elisa-laajakaista.fi. [88.114.211.119]) by smtp.gmail.com with ESMTPSA id i7sm2264454ljb.44.2020.10.04.06.09.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 04 Oct 2020 06:09:51 -0700 (PDT) To: libc-alpha@sourceware.org Subject: [RFC PATCH 1/3] csu: randomize location of TCB Date: Sun, 4 Oct 2020 16:09:36 +0300 Message-Id: <20201004130938.64575-2-toiwoton@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201004130938.64575-1-toiwoton@gmail.com> References: <20201004130938.64575-1-toiwoton@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-9.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Topi Miettinen via Libc-alpha From: Topi Miettinen Reply-To: Topi Miettinen Cc: Topi Miettinen Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" Let's use mmap() for TCB, which makes the location of TCB random instead of always staying predictably next to data segment. Also improve the logic so that allocation of TCB can be assumed to fail insted of segfaulting. RFC: make independent of Linux. Signed-off-by: Topi Miettinen --- csu/libc-tls.c | 20 ++++++++++++++------ sysdeps/unix/sysv/linux/mmap64.c | 19 +++++++++++++++++++ sysdeps/unix/sysv/linux/mmap_internal.h | 3 +++ 3 files changed, 36 insertions(+), 6 deletions(-) diff --git a/csu/libc-tls.c b/csu/libc-tls.c index 06e76bd395..59700c3a95 100644 --- a/csu/libc-tls.c +++ b/csu/libc-tls.c @@ -24,6 +24,9 @@ #include #include #include +#include +#include +#include #ifdef SHARED #error makefile bug, this file is for static only @@ -134,25 +137,30 @@ __libc_setup_tls (void) /* We have to set up the TCB block which also (possibly) contains 'errno'. Therefore we avoid 'malloc' which might touch 'errno'. - Instead we use 'sbrk' which would only uses 'errno' if it fails. - In this case we are right away out of memory and the user gets - what she/he deserves. */ + Instead we use 'internal_mmap' which does not use 'errno'. */ + + int error = 0; + #if TLS_TCB_AT_TP /* Align the TCB offset to the maximum alignment, as _dl_allocate_tls_storage (in elf/dl-tls.c) does using __libc_memalign and dl_tls_static_align. */ tcb_offset = roundup (memsz + GLRO(dl_tls_static_surplus), max_align); - tlsblock = __sbrk (tcb_offset + TLS_INIT_TCB_SIZE + max_align); + tlsblock = __mmap_internal (NULL, tcb_offset + TLS_INIT_TCB_SIZE + max_align, + PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0, &error); #elif TLS_DTV_AT_TP tcb_offset = roundup (TLS_INIT_TCB_SIZE, align ?: 1); - tlsblock = __sbrk (tcb_offset + memsz + max_align - + TLS_PRE_TCB_SIZE + GLRO(dl_tls_static_surplus)); + tlsblock = __mmap_internal (NULL, tcb_offset + memsz + max_align + + TLS_PRE_TCB_SIZE + GLRO(dl_tls_static_surplus), + PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0, &error); tlsblock += TLS_PRE_TCB_SIZE; #else /* In case a model with a different layout for the TCB and DTV is defined add another #elif here and in the following #ifs. */ # error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined" #endif + if (error) + _startup_fatal ("Cannot allocate TCB"); /* Align the TLS block. */ tlsblock = (void *) (((uintptr_t) tlsblock + max_align - 1) diff --git a/sysdeps/unix/sysv/linux/mmap64.c b/sysdeps/unix/sysv/linux/mmap64.c index 8074deb466..11f7c3f99b 100644 --- a/sysdeps/unix/sysv/linux/mmap64.c +++ b/sysdeps/unix/sysv/linux/mmap64.c @@ -67,3 +67,22 @@ weak_alias (__mmap64, mmap) weak_alias (__mmap64, __mmap) libc_hidden_def (__mmap) #endif + +void * +__mmap_internal (void *addr, size_t len, int prot, int flags, int fd, off64_t offset, int *error) +{ + unsigned long int ret; +#ifdef __NR_mmap2 + ret = INTERNAL_SYSCALL_CALL (mmap2, addr, len, prot, flags, fd, + (off_t) (offset / MMAP2_PAGE_UNIT)); +#else + ret = INTERNAL_SYSCALL_CALL (mmap, addr, len, prot, flags, fd, offset); +#endif + if (INTERNAL_SYSCALL_ERROR_P(ret)) + { + *error = ret; + return MAP_FAILED; + } + + return (void *) ret; +} diff --git a/sysdeps/unix/sysv/linux/mmap_internal.h b/sysdeps/unix/sysv/linux/mmap_internal.h index d53f0c642a..00fc14902e 100644 --- a/sysdeps/unix/sysv/linux/mmap_internal.h +++ b/sysdeps/unix/sysv/linux/mmap_internal.h @@ -46,4 +46,7 @@ static uint64_t page_unit; INLINE_SYSCALL_CALL (__nr, __addr, __len, __prot, __flags, __fd, __offset) #endif +/* Internal version of mmap() which doesn't attempt to access errno */ +void *__mmap_internal (void *addr, size_t len, int prot, int flags, int fd, off64_t offset, int *error); + #endif /* MMAP_INTERNAL_LINUX_H */ From patchwork Sun Oct 4 13:09:37 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Topi Miettinen X-Patchwork-Id: 40659 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 3ED08394CC3F; Sun, 4 Oct 2020 13:10:02 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3ED08394CC3F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1601817002; bh=lzEtFLwV+16jLHVuUKNE6UfYIEXHR2X5pOW72ok//bY=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=Jjx1LLecsyOgvqMfpHmfAywh7Yjiv/wWkDkK7l2HRNo4a3wdaZutORzxLosAvY9iu Ot6ONTkkfEHmY4Bb+8XOpa8c6kx+QDK/froa/l3DweH/jv3jjoOHec1M6YiEHjcKEr rhQYgSDHAH5QjptlvzGs0QZab7OUgn75YpVdlWxg= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-lf1-x144.google.com (mail-lf1-x144.google.com [IPv6:2a00:1450:4864:20::144]) by sourceware.org (Postfix) with ESMTPS id 0E64D3840C2F for ; Sun, 4 Oct 2020 13:09:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 0E64D3840C2F Received: by mail-lf1-x144.google.com with SMTP id d24so3743672lfa.8 for ; Sun, 04 Oct 2020 06:09:57 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=lzEtFLwV+16jLHVuUKNE6UfYIEXHR2X5pOW72ok//bY=; b=KEKzgfBZKxYCeFw1SgGGNBk7n/j9RThqnrBy7nwNENrf2QY2WJMJqp0QvDb8DJr7dO AHyU5my7V8Duax/avKbPoBC2DRZDumTGkY1BdXINjXJjOcDF1D+DcAcjzhtpLwrLrzAy 1Qjd+94KwoEVqPJPfGuXTj+5a4B2MkD/lHIkVTemYuweyimSLqyOm78X89u010doBA6q OQLlqqiVpAO+adXsiSmY0JOEe/5B+1EGFRxYVHhB3HEcOvm7ELZXbAdNRS0Jvv6U8atS Zcxvv3wE5ZIskwm26rcnL3LLeJ6OdV10FluZorDb9E+YPf8Q6+YFtt/gvkmJxhMUElak DWcg== X-Gm-Message-State: AOAM530j307RKKhD1w5Wk2XdmvkREh83qagSy9SaLQCiJSsp3N3JtmyT +AyowtvqfMG/Ktvcn79US1CKDfxumDE= X-Google-Smtp-Source: ABdhPJyhx17UWpSmc0+Nh6ps4lyCfPHXAjMrxJfP5+92aCN99dswn/gXEYa+F8R6mnG3KXsS63l3zQ== X-Received: by 2002:ac2:50cd:: with SMTP id h13mr3767020lfm.437.1601816996565; Sun, 04 Oct 2020 06:09:56 -0700 (PDT) Received: from localhost.localdomain (88-114-211-119.elisa-laajakaista.fi. [88.114.211.119]) by smtp.gmail.com with ESMTPSA id i7sm2264454ljb.44.2020.10.04.06.09.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 04 Oct 2020 06:09:56 -0700 (PDT) To: libc-alpha@sourceware.org Subject: [RFC PATCH 2/3] malloc: always use mmap() to improve ASLR Date: Sun, 4 Oct 2020 16:09:37 +0300 Message-Id: <20201004130938.64575-3-toiwoton@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201004130938.64575-1-toiwoton@gmail.com> References: <20201004130938.64575-1-toiwoton@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-9.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Topi Miettinen via Libc-alpha From: Topi Miettinen Reply-To: Topi Miettinen Cc: Topi Miettinen Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" sbrk() returns rather predictable allocations because they are located close to the data segment. Let's always use mmap() instead. RFC: How to do this properly? Signed-off-by: Topi Miettinen --- malloc/arena.c | 5 ++++- malloc/malloc.c | 16 +++++++++++++--- malloc/morecore.c | 2 ++ 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/malloc/arena.c b/malloc/arena.c index cecdb7f4c4..f88db5f248 100644 --- a/malloc/arena.c +++ b/malloc/arena.c @@ -273,7 +273,7 @@ next_env_entry (char ***position) } #endif - +#if 0 #ifdef SHARED static void * __failing_morecore (ptrdiff_t d) @@ -284,6 +284,7 @@ __failing_morecore (ptrdiff_t d) extern struct dl_open_hook *_dl_open_hook; libc_hidden_proto (_dl_open_hook); #endif +#endif static void ptmalloc_init (void) @@ -293,6 +294,7 @@ ptmalloc_init (void) __malloc_initialized = 0; +#if 0 #ifdef SHARED /* In case this libc copy is in a non-default namespace, never use brk. Likewise if dlopened from statically linked program. */ @@ -303,6 +305,7 @@ ptmalloc_init (void) || (_dl_addr (ptmalloc_init, &di, &l, NULL) != 0 && l->l_ns != LM_ID_BASE)) __morecore = __failing_morecore; +#endif #endif thread_arena = &main_arena; diff --git a/malloc/malloc.c b/malloc/malloc.c index cd9933b4e5..2f894b9c60 100644 --- a/malloc/malloc.c +++ b/malloc/malloc.c @@ -371,13 +371,23 @@ __malloc_assert (const char *assertion, const char *file, unsigned int line, #define TRIM_FASTBINS 0 #endif - +#if 0 /* Definition for getting more memory from the OS. */ #define MORECORE (*__morecore) #define MORECORE_FAILURE 0 void * __default_morecore (ptrdiff_t); void *(*__morecore)(ptrdiff_t) = __default_morecore; - +#else +#define MORECORE_FAILURE (-1) +#define MORECORE(x) (MORECORE_FAILURE) +static void * +__failing_morecore2 (ptrdiff_t d) +{ + return (void *) MORECORE_FAILURE; +} +void *(*__morecore)(ptrdiff_t) = __failing_morecore2; +#define MORECORE_CONTIGUOUS 0 +#endif #include @@ -2796,7 +2806,7 @@ systrim (size_t pad, mstate av) some downstream failure.) */ - MORECORE (-extra); + (void) MORECORE (-extra); /* Call the `morecore' hook if necessary. */ void (*hook) (void) = atomic_forced_read (__after_morecore_hook); if (__builtin_expect (hook != NULL, 0)) diff --git a/malloc/morecore.c b/malloc/morecore.c index 72e655f84f..931b37e41f 100644 --- a/malloc/morecore.c +++ b/malloc/morecore.c @@ -15,6 +15,7 @@ License along with the GNU C Library; if not, see . */ +#if 0 #ifndef _MALLOC_INTERNAL # define _MALLOC_INTERNAL # include @@ -51,3 +52,4 @@ __default_morecore (ptrdiff_t increment) return result; } libc_hidden_def (__default_morecore) +#endif From patchwork Sun Oct 4 13:09:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Topi Miettinen X-Patchwork-Id: 40660 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id EAA913840C2F; Sun, 4 Oct 2020 13:10:03 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org EAA913840C2F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1601817004; bh=S44FPJOmyoRv8UxjVoUc+bDsiWQ3cIN/H/TxCf9Tn9w=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=K5kGzXMnug2yXuekoud92WjkcsXRWXUDE/3I8UoaN273Vj0CEJWCfHUymk0IIPbav YJIemK6t3ulhv0oRGi148iB8r7/0cvOi1rQrE4IYcUdi7dbXHJgaQOTp1IW1uUteJ0 nck4uEuqXt8V8FmS91kucbj3FizvjNtC1kV+kc/4= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-lj1-x242.google.com (mail-lj1-x242.google.com [IPv6:2a00:1450:4864:20::242]) by sourceware.org (Postfix) with ESMTPS id 19158384A882 for ; Sun, 4 Oct 2020 13:10:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 19158384A882 Received: by mail-lj1-x242.google.com with SMTP id v23so4919772ljd.1 for ; Sun, 04 Oct 2020 06:10:01 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=S44FPJOmyoRv8UxjVoUc+bDsiWQ3cIN/H/TxCf9Tn9w=; b=CStxRqxR0ZOPjGSvDp2OXulCVOvYSQnuE0S1nBdcv3D4Y6aNFiRH1o5ZxtgFFrDfhV srqHupLXXnNYulMMWewEa5ts483yMFoiHbERgU//5Xyzjxm23fpFCtbzkVO64f9CjMad PYvAinWfSFEQHvAP2FnU5lhrQuBQVmk1yxfT9Ne9EDnthq/vQP82dKqY15AZPZVw38db pEIZzEyyIsQBIB8oNURE8vht34y9lEBahLPRvwt1VO2Bb56Xqk4OdiKBcqZrG47JjfDu vxSTsHH8pFpb2pbE/Eqt0NCx3YmymhcLOjiijCbxv01ZikmJ3/ABq9B6rmQj3wcpzURl Q32w== X-Gm-Message-State: AOAM531tsNl4Kxo/qdMQeccl0t1Xegm+KlzNq+lsDiLxD7UIM4Xqxe6s f2yUivtV7Z5Q5eKZa6pTWJVNX4sU33A= X-Google-Smtp-Source: ABdhPJxvds9oxrGG6XMX4iBKS8JmaK7T7MXrnwFENuruQgagDZkQ8D+t57mxA5e3lg/O9oxa9iWrQA== X-Received: by 2002:a2e:7604:: with SMTP id r4mr2768330ljc.161.1601816999644; Sun, 04 Oct 2020 06:09:59 -0700 (PDT) Received: from localhost.localdomain (88-114-211-119.elisa-laajakaista.fi. [88.114.211.119]) by smtp.gmail.com with ESMTPSA id i7sm2264454ljb.44.2020.10.04.06.09.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 04 Oct 2020 06:09:59 -0700 (PDT) To: libc-alpha@sourceware.org Subject: [RFC PATCH 3/3] dl-sysdep: disable remaining calls to sbrk() Date: Sun, 4 Oct 2020 16:09:38 +0300 Message-Id: <20201004130938.64575-4-toiwoton@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201004130938.64575-1-toiwoton@gmail.com> References: <20201004130938.64575-1-toiwoton@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-10.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Topi Miettinen via Libc-alpha From: Topi Miettinen Reply-To: Topi Miettinen Cc: Topi Miettinen Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" Since sbrk() is not used for memory allocations, there's no need to initialize the break anymore. RFC: how to do this properly? Removing frob_brk() entirely causes build to break with strange link problems. Signed-off-by: Topi Miettinen --- elf/dl-sysdep.c | 2 ++ sysdeps/unix/sysv/linux/dl-sysdep.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/elf/dl-sysdep.c b/elf/dl-sysdep.c index 854570821c..200cea3ca7 100644 --- a/elf/dl-sysdep.c +++ b/elf/dl-sysdep.c @@ -234,6 +234,7 @@ _dl_sysdep_start (void **start_argptr, if (GLRO(dl_platform) != NULL) GLRO(dl_platformlen) = strlen (GLRO(dl_platform)); +#if 0 if (__sbrk (0) == _end) /* The dynamic linker was run as a program, and so the initial break starts just after our bss, at &_end. The malloc in dl-minimal.c @@ -242,6 +243,7 @@ _dl_sysdep_start (void **start_argptr, will see this new value and not clobber our data. */ __sbrk (GLRO(dl_pagesize) - ((_end - (char *) 0) & (GLRO(dl_pagesize) - 1))); +#endif /* If this is a SUID program we make sure that FDs 0, 1, and 2 are allocated. If necessary we are doing it ourself. If it is not diff --git a/sysdeps/unix/sysv/linux/dl-sysdep.c b/sysdeps/unix/sysv/linux/dl-sysdep.c index 90c9b1db2d..d2f64b1137 100644 --- a/sysdeps/unix/sysv/linux/dl-sysdep.c +++ b/sysdeps/unix/sysv/linux/dl-sysdep.c @@ -33,7 +33,9 @@ static inline void frob_brk (void) { +#if 0 __brk (0); /* Initialize the break. */ +#endif } # include