From patchwork Thu Jan 23 06:42:39 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alan Modra X-Patchwork-Id: 105270 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 B1CB23858406 for ; Thu, 23 Jan 2025 06:44:56 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B1CB23858406 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=cNSqZAJn X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-pl1-x636.google.com (mail-pl1-x636.google.com [IPv6:2607:f8b0:4864:20::636]) by sourceware.org (Postfix) with ESMTPS id A6CB63858405 for ; Thu, 23 Jan 2025 06:42:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A6CB63858405 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org A6CB63858405 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::636 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1737614563; cv=none; b=BjP2V6mTt4SBm76l9tOndNIHQlQVXz1ncMOjqZh3ys61P6FYYvZtQGqNREkRkstCynlgufx6ch2viwj8HV3KYpmYbgt/4MwNmK+1F5ebJqirPwX44ecXBWWlWSXoAoyP+HKKogwLL0eY4ctZWIPzn6PZPes5V0S1iimdb/gB9HQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1737614563; c=relaxed/simple; bh=uPtTQI2atGGIKCY0dgdRvOROX8/HrwoL7nm2/j1gJuA=; h=DKIM-Signature:Date:From:To:Subject:Message-ID:MIME-Version; b=FIRFKMc2BJKp8j380S3cBVeqvWfTq7HKpKA9++nwClg1FTkGqtVKr5hwjy4i0yWQ7LMoQ6k61ooVctvJjnbA+RNGzIEGUyTqxDnN54sfNslrsqpUrxr6PHhC6FP5jG59kupyRQ5K8LGVQNed/hyMyxqkcYM5hPLqOblpkdOOuCU= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A6CB63858405 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-21644aca3a0so10793955ad.3 for ; Wed, 22 Jan 2025 22:42:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1737614562; x=1738219362; darn=sourceware.org; h=content-disposition:mime-version:message-id:subject:to:from:date :from:to:cc:subject:date:message-id:reply-to; bh=I3RlDGQPXY/vGqa94OeSZXRgTov3nKVuqPrmKfYvD5E=; b=cNSqZAJnEkB/ikV0mA3xu8x9kJAQaMK2KWFppLAXFEbe3Z5/5U7WWH9Ss4TvpLqBPh NBfg2D8FlOT1kPr32Xtfz+uxPonZTLROrxT51wIOT4iJgkoaPtUAZ3M3N1lv83k1lCbX UQTVxTDxAjadteidGUuWUWeOd+cEHnMzeeSoNcVCgE4SJDVhoGP2XQVENbAOK5VkLoPo Ta5KD4pHMO4GfG9xtMMnIHBNAGbW3Q0XKarHTXa+ACXgvnFUCt8wJ04TPY5Iv3L8cV0J 0uOXCXQZ5DeE7eRGWIa1XdjFxZ/iTKMr7xbfhsnqYly72s3fcRmw90tC/Tfe/HwcpYWA t+BA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737614562; x=1738219362; 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=I3RlDGQPXY/vGqa94OeSZXRgTov3nKVuqPrmKfYvD5E=; b=Vm1yHXrI2ZGmVZkZyFyrl9RY5Io5AgEfrTB5DWyeVXaIhUbKI0i0V0CUvhTkkjrSkE +T/6NqhDJu04lHp/urUey1q/eY7n9k+vIcgoOptlt9QbWZYNRbzMvVG9/UCzjI59iwFL AQYBRo332XtmSAc+RGQ9Te/A7EjhXJgblIgoxbbYwjTiDYrYpeWY7tz00RLv0X89PQ77 VggcxSpzg6wdU8xi+vnqg6UZeR3zGn+hzYJ9CYV/WI+lSlYiNTb+E6zEts1BIA5vV3tY +7BoMuafggEjcF9J7WKUfYCIzsg7imhUZcmIvV0Jemw5ghcDtsJGt0dqyCW5aPaZakwX bbzg== X-Gm-Message-State: AOJu0YwhBYUI+uuAVT2cJQdrv7ngi9ZAuas+4Y+pc2ReBgI2ndmfqZoU Y0Lo8vn/5uW0TFmlY83wPKCR+GHwGBajBCHa8iGI5GXqa/ptjt8Jx7ZY9w== X-Gm-Gg: ASbGncstZPE9YZ6O5YEfHvp+iy1rSzO79dMXIdQSuVBKIZxJW7GX83ZWjk7ed5SZaZU FQhbGyuM6py4BGvS0Fc877YvkqC3hOstn5fe6iv6omjGNd55gmednGZLx2vKFr2sQYAyqu+1oUW rzIn9nTOuODmBIMkaEOESX6Ym1GpK8qoW9A59YwqJFrgDtvokg4qlaZV+ktN05dXIWNb7mEoQRg TxvHNbLUWkptU4K1R0FvBG0SSfYSMBTKVzbKNrdo6JEYv3+jrXtynyHRS/cWJ3o9d4Mo90Juxzx gq8geAMGiXC32nOEEWb0B9giCNIUVpyM9QlkrDzj9Xts6BzLgpM= X-Google-Smtp-Source: AGHT+IFFu2nSybJDbo6zkugKwdonijsPpmFJkBRpfCwWlzkIRunEeQyRCuhJpwmFF1rFE4EkBv+e+A== X-Received: by 2002:a05:6a20:258b:b0:1e1:bdae:e054 with SMTP id adf61e73a8af0-1eb214f16f7mr35927228637.25.1737614562409; Wed, 22 Jan 2025 22:42:42 -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 41be03b00d2f7-a9bdedd7bc9sm11803240a12.64.2025.01.22.22.42.41 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jan 2025 22:42:42 -0800 (PST) Received: by squeak.grove.modra.org (Postfix, from userid 1000) id EC6A61142A56; Thu, 23 Jan 2025 17:12:39 +1030 (ACDT) Date: Thu, 23 Jan 2025 17:12:39 +1030 From: Alan Modra To: binutils@sourceware.org Subject: unusual eh_frame memory leak Message-ID: MIME-Version: 1.0 Content-Disposition: inline X-Spam-Status: No, score=-3032.5 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 X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: binutils-bounces~patchwork=sourceware.org@sourceware.org This one happens with --gc-sections and a linker script that either discards some or all .eh_frame sections (eg. ld-elf/pr14265 test) or maps an input .eh_frame to some other named output section. In that case the discarded/renamed .eh_frame won't have local_cies freed. * elf-eh-frame.c (_bfd_elf_parse_eh_frame): Correct comment. * elf.c (_bfd_elf_free_cached_info): Free eh_frame cies. diff --git a/bfd/elf-eh-frame.c b/bfd/elf-eh-frame.c index dd6802b05fd..08ffc5f1b4a 100644 --- a/bfd/elf-eh-frame.c +++ b/bfd/elf-eh-frame.c @@ -606,7 +606,9 @@ _bfd_elf_parse_eh_frame (bfd *abfd, struct bfd_link_info *info, || (sec->flags & SEC_HAS_CONTENTS) == 0 || sec->sec_info_type != SEC_INFO_TYPE_NONE) { - /* This file does not contain .eh_frame information. */ + /* This file does not contain .eh_frame information or + .eh_frame has already been parsed, as can happen with + --gc-sections. */ return; } diff --git a/bfd/elf.c b/bfd/elf.c index 4fa8a2a7911..0fa580d8d78 100644 --- a/bfd/elf.c +++ b/bfd/elf.c @@ -10134,6 +10134,12 @@ _bfd_elf_free_cached_info (bfd *abfd) } free (elf_section_data (sec)->relocs); elf_section_data (sec)->relocs = NULL; + if (sec->sec_info_type == SEC_INFO_TYPE_EH_FRAME) + { + struct eh_frame_sec_info *sec_info + = elf_section_data (sec)->sec_info; + free (sec_info->cies); + } } free (tdata->symtab_hdr.contents); tdata->symtab_hdr.contents = NULL;