Add new ld option: --print-memory-usage

ld/
	* NEWS: Mention new option.
	* lexsup.c (parse_args): Handle --print-memory-usage.
	(ld_options): Add --print-memory-usage.
	* ldmain.c (main): Call lang_print_memory_usage.
	* ldlex.h (enum option_values): Add OPTION_PRINT_MEMORY_USAGE.
	* ldlang.h: Add prototype of lang_print_memory_usage.
	* ldlang.c (lang_print_memory_size, lang_print_memory_usage): New
	functions.
	* ld.texinfo (Options): Document --print-memory-usage.
	* ld.h (args_type): Add print_memory_usage field.

ld/testsuite/
	* ld-scripts/print-memory-usage-1.t,
	* ld-scripts/print-memory-usage-1.s,
	* ld-scripts/print-memory-usage-1.l,
	* ld-scripts/print-memory-usage-2.t,
	* ld-scripts/print-memory-usage-2.l,
	* ld-scripts/print-memory-usage-3.s,
	* ld-scripts/print-memory-usage-3.t,
	* ld-scripts/print-memory-usage-3.l,
	* ld-scripts/print-memory-usage.t: New tests.
	* ld-scripts/print-memory-usage.exp: Run them.
This commit is contained in:
Tristan Gingold
2015-06-05 15:09:31 +02:00
parent db7858e227
commit 3604cb1f8c
20 changed files with 226 additions and 0 deletions

View File

@@ -0,0 +1,3 @@
Memory region Used Size Region Size %age Used
ROM: 32 B 1 KB 3.12%
RAM: 32 B 256 KB 0.01%

View File

@@ -0,0 +1,8 @@
.text
.globl text_symbol
text_symbol:
.space 32
.data
.globl data_symbol
data_symbol:
.space 32

View File

@@ -0,0 +1,5 @@
MEMORY
{
ROM (RX) : ORIGIN = 0x1000, LENGTH = 1K
RAM (W) : ORIGIN = 0x100000, LENGTH = 256K
}

View File

@@ -0,0 +1 @@
Memory region Used Size Region Size %age Used

View File

@@ -0,0 +1,14 @@
SECTIONS
{
.text 0x1000 :
{
*(.text)
*(.pr)
}
.data :
{
*(.data)
*(.rw)
}
}

View File

@@ -0,0 +1,3 @@
Memory region Used Size Region Size %age Used
ROM: 256 KB 1 MB 25.00%
RAM: 32 B 2 GB 0.00%

View File

@@ -0,0 +1,8 @@
.text
.globl text_symbol
text_symbol:
.space 256*1024
.data
.globl data_symbol
data_symbol:
.space 32

View File

@@ -0,0 +1,5 @@
MEMORY
{
ROM (RX) : ORIGIN = 0x100000, LENGTH = 1M
RAM (W) : ORIGIN = 0x1000000, LENGTH = 2048M
}

View File

@@ -0,0 +1,69 @@
# Test --print-memory-usage linker functionality
# By Tristan Gingold, AdaCore
# Copyright (C) 2015 Free Software Foundation, Inc.
#
# This file is part of the GNU Binutils.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
# MA 02110-1301, USA.
# Mips adds MIPS.abiflags section.
# Spu, pdp11 memory is too small.
# Tic30 needs a special linker script.
# Tic54x interpret space values in bits.
# XCOFF has garbage collection
if { [istarget mips*-*-*]
|| [istarget spu*-*-*]
|| [istarget pdp11*-*-*]
|| [istarget tic30*-*-*]
|| [istarget tic54x*-*-*]
|| [istarget *-*-aix*]
|| [istarget *-*-xcoff*] } {
return
}
run_ld_link_tests {
{
"print-memory-usage-1"
"-T print-memory-usage-1.t -T print-memory-usage.t --print-memory-usage"
""
""
{ "print-memory-usage-1.s" }
{ { ld "print-memory-usage-1.l" } }
"print-memory-usage-1"
}
{
"print-memory-usage-2"
"-T print-memory-usage-2.t --print-memory-usage"
""
""
{ "print-memory-usage-1.s" }
{ { ld "print-memory-usage-2.l" } }
"print-memory-usage-2"
}
{
"print-memory-usage-3"
"-T print-memory-usage-3.t -T print-memory-usage.t --print-memory-usage"
""
""
{ "print-memory-usage-3.s" }
{ { ld "print-memory-usage-3.l" } }
"print-memory-usage-3"
}
}

View File

@@ -0,0 +1,14 @@
SECTIONS
{
.text :
{
*(.text)
*(.pr)
}
.data :
{
*(.data)
*(.rw)
}
}