link script(ld) 수정 방법

spring79y의 이미지

안녕하세요,
아래는 arm-elf-ld에 의해 링크되는 linker.ld 파일인데요,
요렇게 build하게 되면 0x0번지부터 code가 죽.. 실행하게 됩니다.

하지만 제가 원하는 것은 startup code(EVT)부터는 0x0번지부터 실행하면 되는데,
이후 main함수로 branc하고부터는 0x8c000000번지에서 실행하게끔 하고 싶습니다.
MMU를 enable하여 pagetable 수정은 다 끝났는데,
여기서 막히네요. 어디를 어떻게 수정해야 할까요.
스크립트를 해석할 줄 몰라 힘드네요.
도움 부탁 드립니다~~!

OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_ARCH(arm)
ENTRY(EVT)

__TEXT_START__ = 0x00000000;
__DATA_START__ = 0x00010000;
__STACK_END__ = 0x00090000;

SECTIONS
{
.text __TEXT_START__ :
{
*startup.o(.text)
*(.text)
*(.text.*)
}
PROVIDE (__etext = .);

.rodata :
{
*(.rodata)
*(.rodata.*)
}

. = ALIGN(4);
__INIT_DATA_START__ = .;
.data __DATA_START__ :
{
*(.data)
*(.data.*)
SORT(CONSTRUCTORS)
}
. = ALIGN(4);
PROVIDE (__DATA_END__ = .);

__bss_start__ = .;
.bss :
{
*(.bss)
*(.bss.*)
*(COMMON)
. = ALIGN(4);
}
. = ALIGN(4);
__bss_end__ = . ;


PROVIDE (end = .);
}

SoulreaveR의 이미지

이건 스크립트 차원에서 해결하는것 보다는 startup code에 강제로 원하시는 주소로 뛰게끔 code를 집어넣는 것이 해결책인거 같은데요. elf를 따른다면(다른 곳도 비슷한 것으로 알고 있지만) 어차피 code entry는 하나밖에 없습니다. 이거 하고 나서 저거 해라 라는 옵션은 없죠. 원하시는 주소로 뛰는 코드를 만든 뒤에 스크립트가 startup과 main 사이에 해당 코드를 집어넣게 스크립트를 수정해야 겠죠.

SoulreaveR의 이미지

.text __TEXT_START__ :
{
*startup.o(.text)
mainfilename(.text) = 0x8c000000
*(.text)
*(.text.*)
}
형태로 하시면 혹시라도 main이 저 위치에 되는지 모르겠네요. 주소를 절대 주소로 직접 써 넣는건 해보지 못해서;

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.