Commit Graph

195 Commits

Author SHA1 Message Date
00b6892a72 build: fix header installation paths 2017-09-28 17:45:07 -07:00
190faa818d build: use subdir meson.build files
This keeps the build file closer to the sources it effects.
2017-09-28 16:57:00 -07:00
c47822b26e source tree cleanup
The lib/ directory was getting a bit out of hand, so this tries
to organize things a bit so it is easier going forward to locate
the code people want to patch.
2017-09-28 16:23:03 -07:00
a71f05b885 line-visualizer: lower task priority
Keep task priorities lower than the Gtk main loop.
2017-09-28 13:25:22 -07:00
cad87dee49 line-visualizer: teach draw code how to fill in lines
We don't expose this via API yet, but it's handy to have it here so we can
build upon it for doing stacked drawings (as useful for things like memory
usage graphs by type).
2017-09-28 13:24:58 -07:00
3e5a2af1b4 build: remove autotools build system
Now that we are post-3.26, we are removing the legacy autotools
build system in favor of meson.

Please report any errors you have so that we can ensure this is
ready for GNOME 3.28.
2017-09-15 17:44:50 -07:00
19ca2e4ecc alignment: fix armel/armhf/mipsel build failure
This commit extends commit faf1e24edf
"zoom-manager: bring back attribute aligned(8)"
to both places where the attribute was previously dropped from
in commit 63579451b5 "alignment: set alignment on structs".

3.22.3 + commit 6a3d7282ec + commit faf1e24edf + this patch
has been successfully build tested on Debian armhf porterbox
(harris.debian.org). (It also means we end up with exactly
the same as the 3.22.2 + patch situation currently shipped
in Debian 'stretch' 9.0 regarding alignment/cast fixes.)

https://bugzilla.gnome.org/show_bug.cgi?id=784466
2017-07-04 18:15:06 +02:00
4cb42d2f23 callgraph: fix potential divide-by-zero 2017-06-09 21:47:58 -07:00
6dc5472deb meson-build: Remove old workaround breaking build 2017-06-09 19:10:27 -04:00
faf1e24edf zoom-manager: bring back attribute aligned(8)
This was needed for some other architectures, even though it is problematic
that we have to do it (it should really be the default for the parent
GObject struct).
2017-03-02 15:51:52 -08:00
1e31e7ce31 elf: remove newroot check
We don't need this anymore, as the proc source should translate the paths
for us so we get appropriate maps.
2017-02-26 17:06:28 -08:00
5a3ebeaa6f proc: translate paths found in alternate mount namespaces
If we come across a map that is in another namespace, we might need to
translate it to the filesystem/path inside that mount namespace. Otherwise,
we won't be able to accurately decode ELF symbols due to loading the
incorrect binary/debug files.
2017-02-26 16:59:48 -08:00
44967283ed meson: add sp-symbol-dirs.c 2017-02-26 12:49:01 -08:00
1695510b4a elf: add comment about supporting /newroot/ 2017-02-26 00:28:37 -08:00
c8fa62e839 symbols: provide minimal API to specify symbol directories
This gives us the ability to locate symbols by directory in a much more
maintainable manner. Library consumers can adjust their location based
on where they know symbols are likely to be located.
2017-02-25 21:35:21 -08:00
9c7a31cbf6 Revert "callgraph: teach callgraph to use alternative symbol roots"
I found a better approach, so we can remove this.

This reverts commit 222d0ad53f.
2017-02-25 21:27:02 -08:00
6e0c52c934 Revert "elf: add docs for symbol dirs"
I found a better approach, so we can remove this.

This reverts commit 660634e988.
2017-02-25 21:26:49 -08:00
660634e988 elf: add docs for symbol dirs 2017-02-25 19:39:31 -08:00
222d0ad53f callgraph: teach callgraph to use alternative symbol roots
This allows us to have a sysroot different than /, so that we can resolve
symbols that are not necessarily installed on the system. For example, if
we are running an application in an alternate mount namespace, we will want
to resolve the symbols starting from the location of the checkout for that
namespace.

Generally alternate mount namespaces will have paths like "/newroot/usr/.."
so by setting the source to "/newroot/usr/" to "~/.local/" you can do
some fancy remapping.
2017-02-25 19:34:58 -08:00
6a3d7282ec visualizer: use cast macro with type check 2017-02-17 00:20:13 -08:00
67a9d63597 visualizers: use cast macros
We use these everywhere else, so be consistent with that.
2016-12-12 16:15:06 -08:00
ce9cd3ed43 build: Include meson files in dist 2016-12-01 02:47:03 -05:00
52bc856be4 build: Add support for Meson 2016-12-01 02:34:11 -05:00
563a5e3e65 theme-manager: ensure that icons are loaded
This uses the theme manager to ensure that we add the icon path for
consumers of the library.
2016-11-23 19:19:43 -08:00
44ff1f0396 move icons to libsysprof resources 2016-11-23 19:15:38 -08:00
f11aaa189f capture-writer: finalize if allocate failed 2016-11-20 20:26:34 -08:00
e97499b2a4 capture-writer: use frame initializer function 2016-11-20 19:36:24 -08:00
63579451b5 alignment: set alignment on structs
This uses an alternate idea for setting the structure alignments. Lets
see if this silents the ARM builder cast alignment issues.

GSlice (which is what is used for GObjects) guarantees a 2-pointer size
allocation, which means we can be ensured that the alignment is at least
8 bytes.
2016-11-15 22:18:09 -08:00
40eb9a2c4e callgraph-view: compare nodes by using data field
We could have multiple StackNodes that point at the same data. However
we might not have pointer equality. This uses the data pointer that nodes
point at to determine equality.
2016-11-15 22:03:36 -08:00
fc237f0a9b callgraph-view: ensure expand is set for function label
Using the .ui file to create the name cell does not allow us to set the
expand property (it defaults to FALSE and cannot be changed). So instead,
we just add the cell manually like we do for the tag cell.
2016-11-12 14:22:27 -08:00
757a62c692 empty-state: allow action:// in labels
This allows us to have an action in the label that can execute a UI
element.
2016-10-17 20:03:46 -07:00
71e1134cbc capture-writer: ftruncate() when creating capture
We risk overwriting existing data leaving our file in a somewhat broken
state. So first ftruncate() to zero so we are starting from scratch.
2016-10-16 13:23:37 -07:00
392aa177b6 capture-writer: handle EAGAIN
This field is opportunistic, so failure isn't a big deal, but we can at
least try again in an EAGAIN case. Should also squash a compiler warning
about unused results.
2016-10-15 10:26:36 -07:00
a760a6ca10 build: silence some cast-align warnings on ARM 2016-10-14 11:40:55 -07:00
4b95b38c0a capture-cursor: skip when no read delegate was found
If we were skipping due to no matching read delegate, then
we can just ignore any checks on that frame and move to the
next.
2016-10-12 01:35:13 -07:00
b10948a51a build: fix distcheck 2016-10-11 20:51:41 -07:00
20f9f47966 selection: rename SpVisualizerSelection to SpSelection
We want this in sysprof.h (without UI components) so that we
can use it to filter things in profilers. Therefore, we don't
need to make it namespaced to "visualizers" since a time range
selection is a fairly straightforward, and non-UI confined
implementation.
2016-10-10 16:24:22 -07:00
c12c8bc345 visualizer-ticks: remove GdkWindow from ticks widget
This is preventing us from selecting using the region where the
ticks are drawn. This allows the GtkOverlay pass-through child
property to work.
2016-10-10 15:51:48 -07:00
3b61aefdce writer: flush before creating reader from writer
This ensures we have a valid end_time updated in the header
before creating a reader.
2016-10-10 01:48:00 -07:00
ceb7c02f93 sysprof-ui: add missing header to sysprof-ui.h 2016-10-09 20:31:10 -07:00
e239887a9b empty-state: make empty state labels changable 2016-10-09 15:12:50 -07:00
ff8ef76d38 theme-manager: remove debug code 2016-10-09 15:12:38 -07:00
034a7d881f visualizer-view: ensure types are registered
These have the chance of being dropped unless we export them
here manually. We probably should change how we export symbols
so this isn't required in the future.
2016-10-09 12:36:28 -07:00
3b2f2505d3 sysprof-ui: add missing header to public API 2016-10-09 12:36:17 -07:00
34f493d553 capture: use SpClock for current timestamp
It is important that our capture current time matches the
same clock we are using for events. Otherwise we could have
drift between CLOCK_MONOTONIC and CLOCK_MONOTONIC_RAW.
2016-10-08 20:29:16 -07:00
62189670af callgraph: update callgraph when selection changes
When the visualizer selection is changed, we can update the
callgraph to ensure all samples fall within the time range.
2016-10-08 20:09:49 -07:00
00b9b1fbf5 visualizer-selection: move selection to sysprof.h
This allows us to use the selection in profile components
without the use of Gtk.

We will probably end up renaming this class to SpSelection or
something like that.
2016-10-08 20:08:56 -07:00
1e38dc7b37 callgraph-view: add missing get_profile() accessor 2016-10-08 19:20:45 -07:00
37edc29cbb callgraph-view: clear models when unloading 2016-10-08 19:20:30 -07:00
42b82f69c9 visualizer-selection: add visualizer helpers
Adds a copy helper (for thread access) and a contains helper.
2016-10-08 19:19:46 -07:00