[linker] correct indentation

This commit is contained in:
Boris Verkhovskiy 2024-12-18 17:02:09 -07:00
parent 29e880808e
commit 755d45e978
3 changed files with 143 additions and 151 deletions

View File

@ -23,6 +23,6 @@ jobs:
- name: Files are UTF-8 - name: Files are UTF-8
run: ./lint/encoding.sh . run: ./lint/encoding.sh .
- name: Lint Markdown - name: Lint Markdown
run: mdl . --ignore-front-matter -r MD003,MD005,MD011,MD019,MD023,MD027,MD028,MD035,MD037,MD038,MD039,MD047 run: mdl . --ignore-front-matter -r MD003,MD005,MD011,MD019,MD023,MD025,MD027,MD028,MD035,MD037,MD038,MD039,MD047
- name: Lint frontmatter - name: Lint frontmatter
run: ./lint/frontmatter.py . run: ./lint/frontmatter.py .

View File

@ -1,34 +1,31 @@
--- ---
category: tool category: tool
name: GNU linker (ld) name: Linker script
contributors: contributors:
- ["Alexander Kovalchuk", "https://github.com/Zamuhrishka"] - ["Alexander Kovalchuk", "https://github.com/Zamuhrishka"]
translators: translators:
- ["Anuj Shah", "https://github.com/ShahAnuj2610"] - ["Anuj Shah", "https://github.com/ShahAnuj2610"]
filename: learn.ld
--- ---
## Basic concepts and definitions
**Position counter** - the linker has a special variable **Position counter** - the linker has a special variable
"." (dot) always contains the current output position. "`.`" (dot) always contains the current output position.
## Functions `ADDR (section)` - returns the absolute address of the specified section. However
**ADDR (section)** - returns the absolute address of the specified section. However
this section must be defined before using the ADDR function. this section must be defined before using the ADDR function.
**ALIGN (exp)** - returns the value of the position counter aligned to the border `ALIGN (exp)` - returns the value of the position counter aligned to the border
following the exp expression. following the exp expression.
**SIZEOF (section)** - returns the size of the section in bytes. `SIZEOF (section)` - returns the size of the section in bytes.
**FILL (param)** - defines the fill pattern for the current section. All `FILL (param)` - defines the fill pattern for the current section. All
other unspecified regions within the section are filled with the value indicated other unspecified regions within the section are filled with the value indicated
in function argument. in function argument.
**KEEP (param)** - used to mark param as fatal. `KEEP (param)` - used to mark param as fatal.
**ENTRY (func)** - defines the function that will be the entry point `ENTRY (func)` - defines the function that will be the entry point
into the program. into the program.
```bash ```bash
@ -45,7 +42,7 @@ _Min_Stack_Size = 0x400;
# Description of the memory card available for this processor # Description of the memory card available for this processor
# MEMORY # MEMORY
# { # {
#MEMORY_DOMAIN_NAME (access rights): ORIGIN = START_ADDRESS, LENGTH = SIZE # MEMORY_DOMAIN_NAME (access rights) : ORIGIN = START_ADDRESS, LENGTH = SIZE
# } # }
# In our example, the controller contains three memory areas: # In our example, the controller contains three memory areas:
# RAM - starts with the address 0x20000000 and takes 128 KB; # RAM - starts with the address 0x20000000 and takes 128 KB;

View File

@ -1,30 +1,26 @@
--- ---
contributors: contributors:
- ["Alexander Kovalchuk", "https://github.com/Zamuhrishka"] - ["Alexander Kovalchuk", "https://github.com/Zamuhrishka"]
translators:
- ["Alexander Kovalchuk", "https://github.com/Zamuhrishka"]
--- ---
# Основные понятия и определения
**Счетчик позиций** - у компоновщика есть специальная переменная **Счетчик позиций** - у компоновщика есть специальная переменная
"." (точка) всегда содержит текущую позицию вывода. "`.`" (точка) всегда содержит текущую позицию вывода.
# Функции `ADDR(section)` - возвращает абсолютный адрес указанной секции. Однако
**ADDR(section)** - возвращает абсолютный адрес указанной секции. Однако
данная секция должна быть определенна до использования функции ADDR. данная секция должна быть определенна до использования функции ADDR.
**ALIGN(exp)** - возвращает значение счетчика позиций, выравненное на границу `ALIGN(exp)` - возвращает значение счетчика позиций, выравненное на границу
следующего за exp выражения. следующего за exp выражения.
**SIZEOF(section)** - возвращает размер секции в байтах. `SIZEOF(section)` - возвращает размер секции в байтах.
**FILL(param)** - определяет образец заполнения для текущей секции. Все `FILL(param)` - определяет образец заполнения для текущей секции. Все
остальные неуказанные регионы внутри секции заполняются значением указанными остальные неуказанные регионы внутри секции заполняются значением указанными
в аргументе функции. в аргументе функции.
**KEEP(param)** - используется чтобы помечать param как неустранимый. `KEEP(param)` - используется чтобы помечать param как неустранимый.
**ENTRY(func)** - определяет функцию, которая будет являться точкой входа `ENTRY(func)` - определяет функцию, которая будет являться точкой входа
в программу. в программу.
```bash ```bash
@ -111,10 +107,10 @@ SECTIONS
# ИТОГО: Секция .text, которая содержит код программы выравнивается по границе 4-х байт, # ИТОГО: Секция .text, которая содержит код программы выравнивается по границе 4-х байт,
# включает в себя: все секции с кодом программы во всех объектных файлах и защищенные # включает в себя: все секции с кодом программы во всех объектных файлах и защищенные
от сборщика муссора секции .init и .fini во всех объектных файлах, распологается во FLASH # от сборщика муссора секции .init и .fini во всех объектных файлах, распологается во FLASH
памяти микроконтроллера сразу за таблицей векторов. # памяти микроконтроллера сразу за таблицей векторов.
Секции text, .init и .fini. располагаются в памяти в той последовательности в которой они # Секции text, .init и .fini. располагаются в памяти в той последовательности в которой они
объявлены в скрипте. # объявлены в скрипте.
# Третья секция содержит константные данные. # Третья секция содержит константные данные.
.rodata : .rodata :
@ -161,7 +157,7 @@ SECTIONS
# видеть данные. # видеть данные.
# * LMA (Load memory address) - это адрес по которому линкер хранит данные. # * LMA (Load memory address) - это адрес по которому линкер хранит данные.
#Startup должен код скопировать секцию .data из адресов LMA в адреса VMA. # Startup должен код скопировать секцию .data из адресов LMA в адреса VMA.
} >RAM AT> FLASH } >RAM AT> FLASH
@ -197,4 +193,3 @@ SECTIONS
} >RAM } >RAM
} }
``` ```