From 1a9df687ee33bfc8965ed69ea9ab2b3174911e12 Mon Sep 17 00:00:00 2001 From: Lucas PASCAL Date: Wed, 25 Oct 2023 10:41:47 +0200 Subject: [PATCH 1/7] [clean] Renaming as 'Lisk Tesnet' --- app/Makefile | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/app/Makefile b/app/Makefile index 5de804a..67076db 100755 --- a/app/Makefile +++ b/app/Makefile @@ -31,21 +31,25 @@ $(info ************ TARGET_NAME = [$(TARGET_NAME)]) include $(CURDIR)/../deps/ledger-zxlib/makefiles/Makefile.app_testing ifndef COIN -COIN=LSK +# TODO: change the variant name when going to mainnet +COIN=lisk_testnet endif include $(CURDIR)/Makefile.version $(info COIN = [$(COIN)]) -ifeq ($(COIN),LSK) +ifeq ($(COIN),lisk_testnet) # Main app configuration DEFINES += APP_STANDARD ifneq ($(TARGET_NAME),TARGET_NANOS) DEFINES += SUBSTRATE_PARSER_FULL endif -APPNAME = "Lisk" -APPPATH = "44'/134'" --path "44'/1'" +# TODO: change the app name when going to mainnet +APPNAME = "Lisk Testnet" +# TODO: Uncomment the main path when going to mainnet +#APPPATH = "44'/134'" --path "44'/1'" +APPPATH = "44'/1'" else define error_message @@ -94,7 +98,7 @@ dep/%.d: %.c Makefile .PHONY: listvariants listvariants: - @echo VARIANTS COIN LSK + @echo VARIANTS COIN lisk_testnet .PHONY: version version: From 961c7fe0ec57049deb648e764d4ae7be2f65d015 Mon Sep 17 00:00:00 2001 From: Lucas PASCAL Date: Wed, 15 Nov 2023 08:52:55 +0100 Subject: [PATCH 2/7] [add] ledger_app.toml manifest --- .github/workflows/guidelines_enforcer.yml | 2 -- ledger_app.toml | 7 +++++++ 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 ledger_app.toml diff --git a/.github/workflows/guidelines_enforcer.yml b/.github/workflows/guidelines_enforcer.yml index e2dae28..fdaf9f2 100644 --- a/.github/workflows/guidelines_enforcer.yml +++ b/.github/workflows/guidelines_enforcer.yml @@ -21,5 +21,3 @@ jobs: guidelines_enforcer: name: Call Ledger guidelines_enforcer uses: LedgerHQ/ledger-app-workflows/.github/workflows/reusable_guidelines_enforcer.yml@v1 - with: - relative_app_directory: app diff --git a/ledger_app.toml b/ledger_app.toml new file mode 100644 index 0000000..3e4cbb1 --- /dev/null +++ b/ledger_app.toml @@ -0,0 +1,7 @@ +[app] +build_directory = "./app/" +sdk = "C" +devices = ["nanos", "nanox", "nanos+", "stax"] + +[tests] +unit_directory = "./tests/" From b59829d13e4e3f337ecb39bab8687719810d959f Mon Sep 17 00:00:00 2001 From: Lucas PASCAL Date: Wed, 15 Nov 2023 08:55:43 +0100 Subject: [PATCH 3/7] [add] Apparently testnet is on mainnet --- app/Makefile | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/app/Makefile b/app/Makefile index 67076db..04299c3 100755 --- a/app/Makefile +++ b/app/Makefile @@ -31,7 +31,7 @@ $(info ************ TARGET_NAME = [$(TARGET_NAME)]) include $(CURDIR)/../deps/ledger-zxlib/makefiles/Makefile.app_testing ifndef COIN -# TODO: change the variant name when going to mainnet +# TODO: change the variant name when tests finished COIN=lisk_testnet endif @@ -45,11 +45,9 @@ DEFINES += APP_STANDARD ifneq ($(TARGET_NAME),TARGET_NANOS) DEFINES += SUBSTRATE_PARSER_FULL endif -# TODO: change the app name when going to mainnet +# TODO: change the app name when tests finished APPNAME = "Lisk Testnet" -# TODO: Uncomment the main path when going to mainnet -#APPPATH = "44'/134'" --path "44'/1'" -APPPATH = "44'/1'" +APPPATH = "44'/134'" --path "44'/1'" else define error_message From 2c9676dfcc8e40791a4423acccedd01b2e14d4bb Mon Sep 17 00:00:00 2001 From: Carlos Medeiros Date: Mon, 4 Dec 2023 14:23:25 +0000 Subject: [PATCH 4/7] update deps --- deps/ledger-zxlib | 2 +- deps/nanos-secure-sdk | 2 +- deps/nanosplus-secure-sdk | 2 +- deps/nanox-secure-sdk | 2 +- tests_zemu/package.json | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/deps/ledger-zxlib b/deps/ledger-zxlib index 928c759..7f80d18 160000 --- a/deps/ledger-zxlib +++ b/deps/ledger-zxlib @@ -1 +1 @@ -Subproject commit 928c759037ab2a0006f12ffe21e86e64a05fff68 +Subproject commit 7f80d18afcf509f5028d226e36bc206624601229 diff --git a/deps/nanos-secure-sdk b/deps/nanos-secure-sdk index 131fb8f..30189cf 160000 --- a/deps/nanos-secure-sdk +++ b/deps/nanos-secure-sdk @@ -1 +1 @@ -Subproject commit 131fb8f2842ebf3caf513357e9c992fa2b0120f6 +Subproject commit 30189cfd070040e5c144d4dab103d549302dcfff diff --git a/deps/nanosplus-secure-sdk b/deps/nanosplus-secure-sdk index b28aed3..b37b236 160000 --- a/deps/nanosplus-secure-sdk +++ b/deps/nanosplus-secure-sdk @@ -1 +1 @@ -Subproject commit b28aed311a6c208937283857a1bdf4a66f3b04bc +Subproject commit b37b23692004c5451490c31440aeeda8a9fc7d6d diff --git a/deps/nanox-secure-sdk b/deps/nanox-secure-sdk index b28aed3..b37b236 160000 --- a/deps/nanox-secure-sdk +++ b/deps/nanox-secure-sdk @@ -1 +1 @@ -Subproject commit b28aed311a6c208937283857a1bdf4a66f3b04bc +Subproject commit b37b23692004c5451490c31440aeeda8a9fc7d6d diff --git a/tests_zemu/package.json b/tests_zemu/package.json index 3ee5603..7d87a4f 100644 --- a/tests_zemu/package.json +++ b/tests_zemu/package.json @@ -18,14 +18,14 @@ }, "dependencies": { "@zondax/ledger-lisk": "../js", - "@zondax/zemu": "^0.44.0" + "@zondax/zemu": "^0.45.0" }, "devDependencies": { "@types/jest": "^29.5.4", "@typescript-eslint/eslint-plugin": "^6.4.1", "@typescript-eslint/parser": "^6.4.1", "blakejs": "^1.1.1", - "crypto-js": "4.1.1", + "crypto-js": "4.2.0", "ed25519-supercop": "^2.0.1", "eslint": "^8.26.0", "eslint-config-prettier": "^9.0.0", From 9288dc3960473da7c27e0ec5559e8200136da110 Mon Sep 17 00:00:00 2001 From: Carlos Medeiros Date: Mon, 4 Dec 2023 14:42:25 +0000 Subject: [PATCH 5/7] bump version --- app/Makefile | 11 +++++------ app/Makefile.version | 4 ++-- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/app/Makefile b/app/Makefile index 04299c3..f1e182a 100755 --- a/app/Makefile +++ b/app/Makefile @@ -31,22 +31,21 @@ $(info ************ TARGET_NAME = [$(TARGET_NAME)]) include $(CURDIR)/../deps/ledger-zxlib/makefiles/Makefile.app_testing ifndef COIN -# TODO: change the variant name when tests finished -COIN=lisk_testnet +COIN=LSK endif include $(CURDIR)/Makefile.version $(info COIN = [$(COIN)]) -ifeq ($(COIN),lisk_testnet) +ifeq ($(COIN),LSK) # Main app configuration DEFINES += APP_STANDARD ifneq ($(TARGET_NAME),TARGET_NANOS) DEFINES += SUBSTRATE_PARSER_FULL endif -# TODO: change the app name when tests finished -APPNAME = "Lisk Testnet" + +APPNAME = "Lisk" APPPATH = "44'/134'" --path "44'/1'" else @@ -96,7 +95,7 @@ dep/%.d: %.c Makefile .PHONY: listvariants listvariants: - @echo VARIANTS COIN lisk_testnet + @echo VARIANTS COIN LSK .PHONY: version version: diff --git a/app/Makefile.version b/app/Makefile.version index 0fbc502..aef1a2c 100644 --- a/app/Makefile.version +++ b/app/Makefile.version @@ -1,6 +1,6 @@ # This is the `transaction_version` field of `Runtime` -APPVERSION_M=1 +APPVERSION_M=3 # This is the `spec_version` field of `Runtime` APPVERSION_N=0 # This is the patch version of this release -APPVERSION_P=5 +APPVERSION_P=0 From afdac5cbdaaf1ac6a04c86c83c4272b27b9f85e6 Mon Sep 17 00:00:00 2001 From: Carlos Medeiros Date: Mon, 4 Dec 2023 14:42:39 +0000 Subject: [PATCH 6/7] update snapshots --- tests_zemu/snapshots/s-mainmenu/00004.png | Bin 374 -> 370 bytes tests_zemu/snapshots/s-mainmenu/00010.png | Bin 374 -> 370 bytes tests_zemu/snapshots/sp-mainmenu/00004.png | Bin 324 -> 312 bytes tests_zemu/snapshots/sp-mainmenu/00010.png | Bin 324 -> 312 bytes tests_zemu/snapshots/st-mainmenu/00001.png | Bin 13251 -> 13225 bytes tests_zemu/snapshots/x-mainmenu/00004.png | Bin 324 -> 312 bytes tests_zemu/snapshots/x-mainmenu/00010.png | Bin 324 -> 312 bytes 7 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tests_zemu/snapshots/s-mainmenu/00004.png b/tests_zemu/snapshots/s-mainmenu/00004.png index c08b9db6bc8af93c7107264be0af6e14ec67bc43..4114729dc96e5102e4238b6402b8e0114309b3b0 100644 GIT binary patch delta 343 zcmV-d0jU1=0`dZoB!4+cL_t(|ob8#x4ul{KL}9c3{|9?;4X6 zbPfOj0JxTIb=z8bB40JcS8Zp%sBJwHdIp394>r(bPmG~q7SS_+!&QDk75Zqu0HIX( z?WVtzo`BX&Y?aI}|1GxFw&DrXoB+RMbmtwy9AiCzX0C)7oPX`K*`*j@^jLUNR7vHM z0Y=5Tg5DAoC5F~x&-MnywWO3;%D)injt@jN@K3;mExpMwF@(=`Pp7i8U4D13aCzP92n-2qRa z_d~3y2V@OCVO&Mj9FG())=@AgCcF6iL}WE^b+Ue8?y@WH7>^>47P-^H>fd{Kcu p9wNiwT)IG&1ONa4004kl`2ib-jty<8b(jDE002ovPDHLkV1k_unEn6& delta 347 zcmV-h0i^!&0`>xsB!4|gL_t(|ob8#(4#OY}M4@W_|ATW#4@lI(W^Y35&N~(=su^!k z=KufzfNME+ckGo<+E)$nUUstImL2^h))^22JlH^kJu!xEv&cFFI9%mFs6wyRKY);{ z`*y?MwPrwXB=$t$$7F!t1l@UuFvnaEppn}`+9~x`NRX6eWh%b4UiXR~6IM`DbvI$S2HzP;JY~CQ*+hD3j=U?q_EM;#$=MIyHhS zQBO8a5Cf96t_F)Fs1o#KLJdtpbUYVF^)5ehuRZ12v^u#eVQ30UB%7&1x$nj!%6BpG z`lgD}i&$3=5L6B8y~G*imZu0B#ng=X_|^Zv&12qzdeL8e0%{Gg!d(XN!AYcAQuNoH tgtjJpf3k-boqIiXxBvnG0002!<^yMeh6mOxtabnZ002ovPDHLkV1mn>pQ``> diff --git a/tests_zemu/snapshots/s-mainmenu/00010.png b/tests_zemu/snapshots/s-mainmenu/00010.png index c08b9db6bc8af93c7107264be0af6e14ec67bc43..4114729dc96e5102e4238b6402b8e0114309b3b0 100644 GIT binary patch delta 343 zcmV-d0jU1=0`dZoB!4+cL_t(|ob8#x4ul{KL}9c3{|9?;4X6 zbPfOj0JxTIb=z8bB40JcS8Zp%sBJwHdIp394>r(bPmG~q7SS_+!&QDk75Zqu0HIX( z?WVtzo`BX&Y?aI}|1GxFw&DrXoB+RMbmtwy9AiCzX0C)7oPX`K*`*j@^jLUNR7vHM z0Y=5Tg5DAoC5F~x&-MnywWO3;%D)injt@jN@K3;mExpMwF@(=`Pp7i8U4D13aCzP92n-2qRa z_d~3y2V@OCVO&Mj9FG())=@AgCcF6iL}WE^b+Ue8?y@WH7>^>47P-^H>fd{Kcu p9wNiwT)IG&1ONa4004kl`2ib-jty<8b(jDE002ovPDHLkV1k_unEn6& delta 347 zcmV-h0i^!&0`>xsB!4|gL_t(|ob8#(4#OY}M4@W_|ATW#4@lI(W^Y35&N~(=su^!k z=KufzfNME+ckGo<+E)$nUUstImL2^h))^22JlH^kJu!xEv&cFFI9%mFs6wyRKY);{ z`*y?MwPrwXB=$t$$7F!t1l@UuFvnaEppn}`+9~x`NRX6eWh%b4UiXR~6IM`DbvI$S2HzP;JY~CQ*+hD3j=U?q_EM;#$=MIyHhS zQBO8a5Cf96t_F)Fs1o#KLJdtpbUYVF^)5ehuRZ12v^u#eVQ30UB%7&1x$nj!%6BpG z`lgD}i&$3=5L6B8y~G*imZu0B#ng=X_|^Zv&12qzdeL8e0%{Gg!d(XN!AYcAQuNoH tgtjJpf3k-boqIiXxBvnG0002!<^yMeh6mOxtabnZ002ovPDHLkV1mn>pQ``> diff --git a/tests_zemu/snapshots/sp-mainmenu/00004.png b/tests_zemu/snapshots/sp-mainmenu/00004.png index 4f71f5b5d8c0993d7b9215e610901b17f6fc6506..b5092632056af09d75812d585ae10cf913eeca6e 100644 GIT binary patch delta 286 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 wfP2)(L!Vats3UHk<%0wO00000004G=0R$ Date: Mon, 4 Dec 2023 15:09:47 +0000 Subject: [PATCH 7/7] removing linker scripts --- app/script_s2.ld | 170 --------------------------------------------- app/script_x.ld | 175 ----------------------------------------------- 2 files changed, 345 deletions(-) delete mode 100644 app/script_s2.ld delete mode 100644 app/script_x.ld diff --git a/app/script_s2.ld b/app/script_s2.ld deleted file mode 100644 index db3150b..0000000 --- a/app/script_s2.ld +++ /dev/null @@ -1,170 +0,0 @@ -/******************************************************************************* -* Ledger Blue - Secure firmware -* (c) 2016, 2017, 2018, 2019 Ledger -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -********************************************************************************/ - -/** - * Global chip memory layout and constants - * - */ - -MEMORY -{ - DISCARD (rwx) : ORIGIN = 0xd0000000, LENGTH = 1M - - FLASH (rx) : ORIGIN = 0xc0de0000, LENGTH = 400K - DATA (r) : ORIGIN = 0xc0de0000, LENGTH = 400K - SRAM (rwx) : ORIGIN = 0xda7a0000, LENGTH = 30K -} - -PAGE_SIZE = 512; -STACK_SIZE = 8192; -END_STACK = ORIGIN(SRAM) + LENGTH(SRAM); - -ENTRY(main); - -SECTIONS -{ - /****************************************************************/ - /* This section locates the code in FLASH */ - /****************************************************************/ - - /** put text in Flash memory, VMA will be equal to LMA */ - .text : - { - /* provide start code symbol, shall be zero */ - _text = .; - _nvram_start = .; - - /* ensure main is always @ 0xC0D00000 */ - *(.boot*) - - /* place the other code and rodata defined BUT nvram variables that are displaced in a r/w area */ - *(.text*) - *(.rodata) - *(.rodata.[^N]*) /*.data.rel.ro* not here to detect invalid PIC usage */ - *(.rodata.N[^_]*) - - . = ALIGN(4); - - /* all code placed */ - _etext = .; - - . = ALIGN(PAGE_SIZE); - - _nvram_data = .; - - /* NVM data (ex-filesystem) */ - *(.bss.N_* .rodata.N_*) - - . = ALIGN(PAGE_SIZE); - _envram_data = .; - - _install_parameters = .; - _nvram_end = .; - } > FLASH = 0x00 - - .data (NOLOAD): - { - . = ALIGN(4); - - /** - * Place RAM initialized variables - */ - _data = .; - - *(vtable) - *(.data*) - - _edata = .; - - } > DISCARD /*> SRAM AT>FLASH = 0x00 */ - - .bss : - { - /** - * Place RAM uninitialized variables - */ - _bss = .; - *(.bss*) - _ebss = .; - - - /** - * Reserve stack size - */ - . = ALIGN(4); - app_stack_canary = .; - PROVIDE(app_stack_canary = .); - . += 4; - _stack_validation = .; - . = _stack_validation + STACK_SIZE; - _stack = ABSOLUTE(END_STACK) - STACK_SIZE; - PROVIDE( _stack = ABSOLUTE(END_STACK) - STACK_SIZE); - _estack = ABSOLUTE(END_STACK); - PROVIDE( _estack = ABSOLUTE(END_STACK) ); - - } > SRAM = 0x00 - - /****************************************************************/ - /* DEBUG */ - /****************************************************************/ - - /* remove the debugging information from the standard libraries */ - DEBUG (NOLOAD) : - { - libc.a ( * ) - libm.a ( * ) - libgcc.a ( * ) - *(.ARM.exidx* .gnu.linkonce.armexidx.*) - } > DISCARD - - /* Stabs debugging sections. */ - .stab 0 : { *(.stab) } - .stabstr 0 : { *(.stabstr) } - .stab.excl 0 : { *(.stab.excl) } - .stab.exclstr 0 : { *(.stab.exclstr) } - .stab.index 0 : { *(.stab.index) } - .stab.indexstr 0 : { *(.stab.indexstr) } - .comment 0 : { *(.comment) } - /* DWARF debug sections. - Symbols in the DWARF debugging sections are relative to the beginning - of the section so we begin them at 0. */ - /* DWARF 1 */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - /* GNU DWARF 1 extensions */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - /* DWARF 2 */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - /* SGI/MIPS DWARF 2 extensions */ - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } -} - -PROVIDE(_nvram = ABSOLUTE(_nvram_start)); -PROVIDE(_envram = ABSOLUTE(_nvram_end)); \ No newline at end of file diff --git a/app/script_x.ld b/app/script_x.ld deleted file mode 100644 index 0d174c4..0000000 --- a/app/script_x.ld +++ /dev/null @@ -1,175 +0,0 @@ -/******************************************************************************* -* Ledger Blue - Secure firmware -* (c) 2016, 2017, 2018, 2019 Ledger -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -********************************************************************************/ - -/** - * Global chip memory layout and constants - * - */ - -MEMORY -{ - DISCARD (rwx) : ORIGIN = 0xd0000000, LENGTH = 1M - - FLASH (rx) : ORIGIN = 0xc0de0000, LENGTH = 400K - DATA (r) : ORIGIN = 0xc0de0000, LENGTH = 400K - SRAM (rwx) : ORIGIN = 0xda7a0000, LENGTH = 30K -} - -PAGE_SIZE = 256; -STACK_SIZE = 8192; -END_STACK = ORIGIN(SRAM) + LENGTH(SRAM); - -ENTRY(main) - -SECTIONS -{ - - /****************************************************************/ - /* This section locates the code in FLASH */ - /****************************************************************/ - - /** put text in Flash memory, VMA will be equal to LMA */ - .text : - { - /* provide start code symbol, shall be zero */ - _text = .; - _nvram = .; - PROVIDE(_nvram = . + ORIGIN(FLASH)); - - PROVIDE(_setjmp = setjmp); /*thanks clang*/ - - /* ensure main is always @ 0xC0D00000 */ - *(.boot*) - - /* place the other code and rodata defined BUT nvram variables that are displaced in a r/w area */ - *(.text*) - *(.rodata) - *(.rodata.[^N]*) /*.data.rel.ro* not here to detect invalid PIC usage */ - *(.rodata.N[^_]*) - - . = ALIGN(4); - - /* all code placed */ - _etext = .; - - . = ALIGN(PAGE_SIZE); - - _nvram_data = .; - - /* NVM data (ex-filesystem) */ - *(.bss.N_* .rodata.N_*) - - . = ALIGN(PAGE_SIZE); - _envram_data = .; - /* _nvram_data_size = _envram_data - _nvram_data; */ - _install_parameters = .; - PROVIDE(N_install_parameters = .); - _envram = .; - PROVIDE(_envram = . + ORIGIN(FLASH)); - - } > FLASH = 0x00 - - .data (NOLOAD): - { - . = ALIGN(4); - - /** - * Place RAM initialized variables - */ - _data = .; - - *(vtable) - *(.data*) - - _edata = .; - - } > DISCARD /*> SRAM AT>FLASH = 0x00 */ - - .bss : - { - /** - * Place RAM uninitialized variables - */ - _bss = .; - *(.bss*) - _ebss = .; - - - /** - * Reserve stack size - */ - . = ALIGN(4); - app_stack_canary = .; - PROVIDE(app_stack_canary = .); - . += 4; - _stack_validation = .; - . = _stack_validation + STACK_SIZE; - _stack = ABSOLUTE(END_STACK) - STACK_SIZE; - PROVIDE( _stack = ABSOLUTE(END_STACK) - STACK_SIZE); - _estack = ABSOLUTE(END_STACK); - PROVIDE( _estack = ABSOLUTE(END_STACK) ); - - } > SRAM = 0x00 - - /****************************************************************/ - /* DEBUG */ - /****************************************************************/ - - /* remove the debugging information from the standard libraries */ - DEBUG (NOLOAD) : - { - libc.a ( * ) - libm.a ( * ) - libgcc.a ( * ) - *(.ARM.exidx* .gnu.linkonce.armexidx.*) - } > DISCARD - - /* Stabs debugging sections. */ - .stab 0 : { *(.stab) } - .stabstr 0 : { *(.stabstr) } - .stab.excl 0 : { *(.stab.excl) } - .stab.exclstr 0 : { *(.stab.exclstr) } - .stab.index 0 : { *(.stab.index) } - .stab.indexstr 0 : { *(.stab.indexstr) } - .comment 0 : { *(.comment) } - /* DWARF debug sections. - Symbols in the DWARF debugging sections are relative to the beginning - of the section so we begin them at 0. */ - /* DWARF 1 */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - /* GNU DWARF 1 extensions */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - /* DWARF 2 */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - /* SGI/MIPS DWARF 2 extensions */ - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } - -}