mirror of
https://git.yoctoproject.org/poky
synced 2026-02-05 16:28:43 +01:00
devtool: ide-sdk prefer sources from workspace
Improve the previous commit:
- log an error if some assumptions are not true
- Use TARGET_DBGSRC_DIR variable
- Do the same for ide none
Why the additional source mapping is required:
For example the cmake-example recipe refers to sources like this:
./recipe-sysroot-native/usr/bin/x86_64-poky-linux/x86_64-poky-linux-readelf \
-wi image/usr/bin/cmake-example | grep -B1 DW_AT_comp_dir
...
<560> DW_AT_name : (indirect line string, offset: 0x1da):
/usr/src/debug/cmake-example/1.0/oe-local-files/cpp-example.cpp
...
Another example is powertop:
./recipe-sysroot-native/usr/bin/x86_64-poky-linux/x86_64-poky-linux-readelf \
-wi image/usr/sbin/powertop | grep -B1 DW_AT_comp_dir
...
<561> DW_AT_name : (indirect line string, offset: 0x1da):
/usr/src/debug/powertop/2.15/src/devlist.cpp
...
For recipes with local files this works. The oe-local-files folder is
not available in the rootfs-dbg and therefore the sources are first
found in the workspace folder. GDB searches for source files in various
places:
https://sourceware.org/gdb/current/onlinedocs/gdb.html/Source-Path.html
However, for the powertop example the sources opened in the editor are
from the rootfs-dbg instead of from the workspace.
Bitbake calls the compiler with
-fmacro-prefix-map=${S}=${TARGET_DBGSRC_DIR}
where TARGET_DBGSRC_DIR defaults to "/usr/src/debug/${PN}/${PV}".
A source map which maps the recipe specific path from TARGET_DBGSRC_DIR
to the workspace fixes this.
The already existing source map for /usr/src/debug applies for all other
recipes. It finds the sources (read only) in the rootfs-dbg folder.
(From OE-Core rev: 06601632c1879cb80276f9b36de91fb7808311a5)
Signed-off-by: Adrian Freihofer <adrian.freihofer@siemens.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
a5b75e29ff
commit
c82c57621b
@@ -242,9 +242,19 @@ class IdeVSCode(IdeBase):
|
||||
if gdb_cross_config.image_recipe.rootfs_dbg:
|
||||
launch_config['additionalSOLibSearchPath'] = modified_recipe.solib_search_path_str(
|
||||
gdb_cross_config.image_recipe)
|
||||
src_file_map[os.path.join("/usr/src/debug", modified_recipe.pn, modified_recipe.pv)] = "${workspaceFolder}"
|
||||
src_file_map["/usr/src/debug"] = os.path.join(
|
||||
gdb_cross_config.image_recipe.rootfs_dbg, "usr", "src", "debug")
|
||||
# First: Search for sources of this recipe in the workspace folder
|
||||
if modified_recipe.pn in modified_recipe.target_dbgsrc_dir:
|
||||
src_file_map[modified_recipe.target_dbgsrc_dir] = "${workspaceFolder}"
|
||||
else:
|
||||
logger.error(
|
||||
"TARGET_DBGSRC_DIR must contain the recipe name PN.")
|
||||
# Second: Search for sources of other recipes in the rootfs-dbg
|
||||
if modified_recipe.target_dbgsrc_dir.startswith("/usr/src/debug"):
|
||||
src_file_map["/usr/src/debug"] = os.path.join(
|
||||
gdb_cross_config.image_recipe.rootfs_dbg, "usr", "src", "debug")
|
||||
else:
|
||||
logger.error(
|
||||
"TARGET_DBGSRC_DIR must start with /usr/src/debug.")
|
||||
else:
|
||||
logger.warning(
|
||||
"Cannot setup debug symbols configuration for GDB. IMAGE_GEN_DEBUGFS is not enabled.")
|
||||
|
||||
Reference in New Issue
Block a user