summaryrefslogtreecommitdiff
path: root/scripts/build/debug/gdb.sh
blob: 14873a34f8defba1dbf42e6dd12fd258badcffc4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# Build script for the gdb debug facility

is_enabled="${CT_GDB}"

do_print_filename() {
    [ "${CT_GDB}" = "y" ] || return 0
    echo "gdb`do_debug_gdb_suffix`"
}

do_debug_gdb_suffix() {
    case "${CT_GDB_VERSION}" in
        snapshot)   ;;
        *)          echo "-${CT_GDB_VERSION}";;
    esac
}

do_debug_gdb_get() {
    CT_GetFile "gdb`do_debug_gdb_suffix`"                           \
               ftp://ftp.gnu.org/pub/gnu/gdb                        \
               ftp://sources.redhat.com/pub/gdb/releases            \
               ftp://sources.redhat.com/pub/gdb/old-releases        \
               ftp://sources.redhat.com/pub/gdb/snapshots/current 
}

do_debug_gdb_extract() {
    CT_ExtractAndPatch "gdb`do_debug_gdb_suffix`"
}

do_debug_gdb_build() {
    gdb_src_dir="${CT_SRC_DIR}/gdb`do_debug_gdb_suffix`"

    extra_config=
    # Version 6.3 and below behave badly with gdbmi
    case "${CT_GDB_VERSION}" in
        6.2*|6.3)   extra_config="${extra_config} --disable-gdbmi";;
    esac

    if [ "${CT_GDB_CROSS}" = "y" ]; then
        CT_DoStep INFO "Installing cross-gdb"
        CT_DoLog EXTRA "Configuring cross-gdb"

        mkdir -p "${CT_BUILD_DIR}/build-gdb-cross"
        cd "${CT_BUILD_DIR}/build-gdb-cross"

        "${gdb_src_dir}/configure"                      \
            --build=${CT_BUILD}                         \
            --host=${CT_HOST}                           \
            --target=${CT_TARGET}                       \
            --prefix="${CT_PREFIX_DIR}"                 \
            --with-build-sysroot="${CT_SYSROOT_DIR}"    \
            --enable-threads                            \
            ${extra_config}                             2>&1 |CT_DoLog ALL

        CT_DoLog EXTRA "Building cross-gdb"
        make ${PARALLELMFLAGS}                          2>&1 |CT_DoLog ALL

        CT_DoLog EXTRA "Installing cross-gdb"
        make install                                    2>&1 |CT_DoLog ALL

        CT_EndStep

        CT_DoStep INFO "Installing gdbserver"
        CT_DoLog EXTRA "Configuring gdbserver"

        mkdir -p "${CT_BUILD_DIR}/build-gdb-gdbserver"
        cd "${CT_BUILD_DIR}/build-gdb-gdbserver"

        # Workaround for bad versions, where the configure
        # script for gdbserver is not executable...
        # Bah, GNU folks strike again... :-(
        chmod +x "${gdb_src_dir}/gdb/gdbserver/configure"

        gdbserver_LDFLAGS=
        if [ "${CT_GDB_CROSS_STATIC_GDBSERVER}" = "y" ]; then
            gdbserver_LDFLAGS=-static
        fi

        LDFLAGS="${gdbserver_LDFLAGS}"                  \
        "${gdb_src_dir}/gdb/gdbserver/configure"        \
            --build=${CT_BUILD}                         \
            --host=${CT_TARGET}                         \
            --target=${CT_TARGET}                       \
            --prefix=/usr                               \
            --sysconfdir=/etc                           \
            --localstatedir=/var                        \
            --includedir="${CT_HEADERS_DIR}"            \
            --with-build-sysroot="${CT_SYSROOT_DIR}"    \
            --program-prefix=                           \
            --without-uiout                             \
            --disable-tui                               \
            --disable-gdbtk                             \
            --without-x                                 \
            --without-included-gettext                  \
            ${extra_config}                             2>&1 |CT_DoLog ALL

        CT_DoLog EXTRA "Building gdbserver"
        make ${PARALLELMFLAGS} CC=${CT_TARGET}-${CT_CC} 2>&1 |CT_DoLog ALL

        CT_DoLog EXTRA "Installing gdbserver"
        make DESTDIR="${CT_DEBUG_INSTALL_DIR}" install  2>&1 |CT_DoLog ALL

        CT_EndStep
    fi

    if [ "${CT_GDB_NATIVE}" = "y" ]; then
        CT_DoStep EXTRA "Installing native gdb"
        CT_DoLog EXTRA "Configuring native gdb"

        mkdir -p "${CT_BUILD_DIR}/build-gdb-native"
        cd "${CT_BUILD_DIR}/build-gdb-native"

        "${gdb_src_dir}/configure"                      \
            --build=${CT_BUILD}                         \
            --host=${CT_TARGET}                         \
            --target=${CT_TARGET}                       \
            --prefix=/usr                               \
            --with-build-sysroot="${CT_SYSROOT_DIR}"    \
            --without-uiout                             \
            --disable-tui                               \
            --disable-gdbtk                             \
            --without-x                                 \
            --disable-sim                               \
            --disable-gdbserver                          \
            --without-included-gettext                  \
            ${extra_config}                             2>&1 |CT_DoLog ALL

        CT_DoLog EXTRA "Building native gdb"
        make ${PARALLELMFLAGS} CC=${CT_TARGET}-${CT_CC} 2>&1 |CT_DoLog ALL

        CT_DoLog EXTRA "Installing native gdb"
        make DESTDIR="${CT_DEBUG_INSTALL_DIR}" install  2>&1 |CT_DoLog ALL

        CT_EndStep
    fi
}