From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf1-x42d.google.com (mail-pf1-x42d.google.com [IPv6:2607:f8b0:4864:20::42d]) by sourceware.org (Postfix) with ESMTPS id 300C938432F0 for ; Sun, 4 Dec 2022 21:51:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 300C938432F0 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-pf1-x42d.google.com with SMTP id c15so9607855pfb.13 for ; Sun, 04 Dec 2022 13:51:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-disposition:mime-version:message-id:subject:to:from:date :from:to:cc:subject:date:message-id:reply-to; bh=cW6Cn30tEfH7sssoK/lXj0wBGmhFwPfOaAv1rriTWYM=; b=PmJuUussuwkh0SIIaSDXmkTwtdgFV6JRh0EYJgO5C/rUYVm1NB5gPBfRmkRQgNaWWl knY37RWKeQd+b/hljriUFoIY5IfSOXV/QrWmI5UzNXesKoJM6P0Apy2As1fSdNBKJjxD ncjUY3DON3ciOAcu2NkEguhJY4YrUwvNlsb8JG7DGqOJe7malGq+9xkFxrNJ6mnj9eGc 6Xl3wOdSw5X8Fz5Z6zfOliWY43jFAMk1pV2RG5WWUoUo2TKH1v0FW0Wx3EIzs2a0snLW NqmjEZnrTTb7TqIBgm7thyUpDWNI+7O05KTeZjm4wP9vMLf6BEqPzCEkmvpF9CDLR1qA JeeA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-disposition:mime-version:message-id:subject:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=cW6Cn30tEfH7sssoK/lXj0wBGmhFwPfOaAv1rriTWYM=; b=33ayBNUwSXNCGjgNOBR8uyLQ9x8mKW7+utYHCJxQVT/TqQ9EihZj4FM4SeSAfkH9b7 +sXK06foPuGFKOvYXqLFdhdC3uGTE5XMt2KBOMtGOSusasVUBwzHJarppmnYRzkH3rrE /uKUSogpwBjYD1111QbJOP95d/aTHWVwSDpKxjyM1oPa3VYlcQP1i6CebaX0ADkV8HVL j4wgf0iD8VgARhfPilh+Ud5mTsUR2eGvd2ma1k5iWxV8T7B3Aeii5Oexq4j35CoqpWyw QFW1oAYbGkmjp98cmbG8IgQRuTh3GZeNaFZLMvuCJeN5cYf+ox/2oZiq3gl6Xfy8zyDi eK7A== X-Gm-Message-State: ANoB5pn4w5juh1B4fpvPmHBAnc7UxkYE9qxpBeBfZDEk4HVZ38XZIQ3I Owt65hHw8jdTHhy9Ut5c6w4VuL0Hg4w= X-Google-Smtp-Source: AA0mqf4w60HPmeJfh/HoFHevuP0s8bt7SynJxxCPam4L1HvKWnToytoI9Ehja7oTcLYoKpIqKi4jmg== X-Received: by 2002:a63:5d63:0:b0:462:85d6:6276 with SMTP id o35-20020a635d63000000b0046285d66276mr54817585pgm.293.1670190690620; Sun, 04 Dec 2022 13:51:30 -0800 (PST) Received: from squeak.grove.modra.org (158.106.96.58.static.exetel.com.au. [58.96.106.158]) by smtp.gmail.com with ESMTPSA id q4-20020a170902dac400b00189651e5c26sm9189814plx.236.2022.12.04.13.51.28 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 04 Dec 2022 13:51:29 -0800 (PST) Received: by squeak.grove.modra.org (Postfix, from userid 1000) id D5FD91142D17; Mon, 5 Dec 2022 08:21:26 +1030 (ACDT) Date: Mon, 5 Dec 2022 08:21:26 +1030 From: Alan Modra To: binutils@sourceware.org Subject: Renaming .debug to .zdebug and vice versa Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Spam-Status: No, score=-3036.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.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Move a couple of elf.c functions to compress.c. * compress.c (bfd_debug_name_to_zdebug): New inline function. (bfd_zdebug_name_to_debug): Likewise. * elf.c (convert_debug_to_zdebug, convert_zdebug_to_debug): Delete. (_bfd_elf_make_section_from_shdr, elf_fake_sections), (_bfd_elf_assign_file_positions_for_non_load): Adjust to suit. * coffgen.c (make_a_section_from_file): Use new inlines here. diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index 0b071dda1e5..48451175364 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -7963,6 +7963,31 @@ bfd_byte *bfd_simple_get_relocated_section_contents (bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table); /* Extracted from compress.c. */ +static inline char * +bfd_debug_name_to_zdebug (bfd *abfd, const char *name) +{ + size_t len = strlen (name); + char *new_name = bfd_alloc (abfd, len + 2); + if (new_name == NULL) + return NULL; + new_name[0] = '.'; + new_name[1] = 'z'; + memcpy (new_name + 2, name + 1, len); + return new_name; +} + +static inline char * +bfd_zdebug_name_to_debug (bfd *abfd, const char *name) +{ + size_t len = strlen (name); + char *new_name = bfd_alloc (abfd, len); + if (new_name == NULL) + return NULL; + new_name[0] = '.'; + memcpy (new_name + 1, name + 2, len - 1); + return new_name; +} + bool bfd_get_full_section_contents (bfd *abfd, asection *section, bfd_byte **ptr); diff --git a/bfd/coffgen.c b/bfd/coffgen.c index aab41c34ec7..f2c71b19880 100644 --- a/bfd/coffgen.c +++ b/bfd/coffgen.c @@ -181,19 +181,12 @@ make_a_section_from_file (bfd *abfd, abfd, name); return false; } - if (return_section->compress_status == COMPRESS_SECTION_DONE) + if (return_section->compress_status == COMPRESS_SECTION_DONE + && name[1] != 'z') { - if (name[1] != 'z') - { - unsigned int len = strlen (name); - - new_name = bfd_alloc (abfd, len + 2); - if (new_name == NULL) - return false; - new_name[0] = '.'; - new_name[1] = 'z'; - memcpy (new_name + 2, name + 1, len); - } + new_name = bfd_debug_name_to_zdebug (abfd, name); + if (new_name == NULL) + return false; } break; case decompress: @@ -207,13 +200,9 @@ make_a_section_from_file (bfd *abfd, } if (name[1] == 'z') { - unsigned int len = strlen (name); - - new_name = bfd_alloc (abfd, len); + new_name = bfd_zdebug_name_to_debug (abfd, name); if (new_name == NULL) return false; - new_name[0] = '.'; - memcpy (new_name + 1, name + 2, len - 1); } break; } diff --git a/bfd/compress.c b/bfd/compress.c index ad3feeafc6c..95579847cf3 100644 --- a/bfd/compress.c +++ b/bfd/compress.c @@ -30,6 +30,35 @@ #define MAX_COMPRESSION_HEADER_SIZE 24 +/* +CODE_FRAGMENT +.static inline char * +.bfd_debug_name_to_zdebug (bfd *abfd, const char *name) +.{ +. size_t len = strlen (name); +. char *new_name = bfd_alloc (abfd, len + 2); +. if (new_name == NULL) +. return NULL; +. new_name[0] = '.'; +. new_name[1] = 'z'; +. memcpy (new_name + 2, name + 1, len); +. return new_name; +.} +. +.static inline char * +.bfd_zdebug_name_to_debug (bfd *abfd, const char *name) +.{ +. size_t len = strlen (name); +. char *new_name = bfd_alloc (abfd, len); +. if (new_name == NULL) +. return NULL; +. new_name[0] = '.'; +. memcpy (new_name + 1, name + 2, len - 1); +. return new_name; +.} +. +*/ + static bool decompress_contents (bool is_zstd, bfd_byte *compressed_buffer, bfd_size_type compressed_size, diff --git a/bfd/elf.c b/bfd/elf.c index 87ec1623313..9e490c968c1 100644 --- a/bfd/elf.c +++ b/bfd/elf.c @@ -968,31 +968,6 @@ bfd_elf_group_name (bfd *abfd ATTRIBUTE_UNUSED, const asection *sec) return NULL; } -static char * -convert_debug_to_zdebug (bfd *abfd, const char *name) -{ - unsigned int len = strlen (name); - char *new_name = bfd_alloc (abfd, len + 2); - if (new_name == NULL) - return NULL; - new_name[0] = '.'; - new_name[1] = 'z'; - memcpy (new_name + 2, name + 1, len); - return new_name; -} - -static char * -convert_zdebug_to_debug (bfd *abfd, const char *name) -{ - unsigned int len = strlen (name); - char *new_name = bfd_alloc (abfd, len); - if (new_name == NULL) - return NULL; - new_name[0] = '.'; - memcpy (new_name + 1, name + 2, len - 1); - return new_name; -} - /* This a copy of lto_section defined in GCC (lto-streamer.h). */ struct lto_section @@ -1285,7 +1260,7 @@ _bfd_elf_make_section_from_shdr (bfd *abfd, /* Convert section name from .zdebug_* to .debug_* so that linker will consider this section as a debug section. */ - char *new_name = convert_zdebug_to_debug (abfd, name); + char *new_name = bfd_zdebug_name_to_debug (abfd, name); if (new_name == NULL) return false; bfd_rename_section (newsect, new_name); @@ -3233,7 +3208,7 @@ elf_fake_sections (bfd *abfd, asection *asect, void *fsarg) needed. */ if (name[1] == 'z') { - char *new_name = convert_zdebug_to_debug (abfd, name); + char *new_name = bfd_zdebug_name_to_debug (abfd, name); if (new_name == NULL) { arg->failed = true; @@ -3249,7 +3224,7 @@ elf_fake_sections (bfd *abfd, asection *asect, void *fsarg) section smaller. So only rename the section when compression has actually taken place. If input section name is .zdebug_*, we should never compress it again. */ - char *new_name = convert_debug_to_zdebug (abfd, name); + char *new_name = bfd_debug_name_to_zdebug (abfd, name); if (new_name == NULL) { arg->failed = true; @@ -6729,8 +6704,7 @@ _bfd_elf_assign_file_positions_for_non_load (bfd *abfd) { /* If section is compressed with zlib-gnu, convert section name from .debug_* to .zdebug_*. */ - char *new_name - = convert_debug_to_zdebug (abfd, name); + char *new_name = bfd_debug_name_to_zdebug (abfd, name); if (new_name == NULL) return false; name = new_name; -- Alan Modra Australia Development Lab, IBM